總結將SQL server 中表數據自動生成拼音碼的實現步驟:
1、創建一個方法,傳入一個參數,這個參數是你要將什麼樣的數據自動生成拼音碼。
下面代碼可以直接複製到你們的編輯器中運行。運行後就可以調用 fn_GetPy(str)方法。
CREATE function fn_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
--WITH ENCRYPTION
as
begin
declare @intLen int
declare @strRet nvarchar(4000)
declare @temp nvarchar(100)
set @intLen = len(@str)
set @strRet = ''
while @intLen > 0
begin
set @temp = ''
select @temp = case
when substring(@str,@intLen,1) >= '帀' then 'Z'
when substring(@str,@intLen,1) >= '丫' then 'Y'
when substring(@str,@intLen,1) >= '夕' then 'X'
when substring(@str,@intLen,1) >= '屲' then 'W'
when substring(@str,@intLen,1) >= '他' then 'T'
when substring(@str,@intLen,1) >= '仨' then 'S'
when substring(@str,@intLen,1) >= '呥' then 'R'
when substring(@str,@intLen,1) >= '七' then 'Q'
when substring(@str,@intLen,1) >= '妑' then 'P'
when substring(@str,@intLen,1) >= '噢' then 'O'
when substring(@str,@intLen,1) >= '拏' then 'N'
when substring(@str,@intLen,1) >= '嘸' then 'M'
when substring(@str,@intLen,1) >= '垃' then 'L'
when substring(@str,@intLen,1) >= '咔' then 'K'
when substring(@str,@intLen,1) >= '丌' then 'J'
when substring(@str,@intLen,1) >= '鉿' then 'H'
when substring(@str,@intLen,1) >= '旮' then 'G'
when substring(@str,@intLen,1) >= '發' then 'F'
when substring(@str,@intLen,1) >= '妸' then 'E'
when substring(@str,@intLen,1) >= '咑' then 'D'
when substring(@str,@intLen,1) >= '嚓' then 'C'
when substring(@str,@intLen,1) >= '八' then 'B'
when substring(@str,@intLen,1) >= '吖' then 'A'
else rtrim(ltrim(substring(@str,@intLen,1)))
end
--對於漢字特殊字符,不生成拼音碼
if (ascii(@temp)>127) set @temp = ''
--對於英文中小括號,不生成拼音碼
if @temp = '(' or @temp = ')' set @temp = ''
select @strRet = @temp + @strRet
set @intLen = @intLen - 1
end
return lower(@strRet)
end
2、執行完步驟一後可以直接代用方法:fn_GetPy(str) ,str是要傳入的參數。
實例:
將表科室表(DicDept_KS)中的name字段自動生成一個拼音碼,注:Code ,Name,PYM 這三個字段都是表DicDept_KS中的字段。
--查詢這個科室表中的是否生成拼音碼,確認生成了拼音碼後進行修改
SELECT Code, name , dbo.fn_GetPy(name) AS PYM FROM dbo.DicDept_KS
--修改科室表中的PYM字段爲生成的拼音碼
update dbo.DicDept_KS set PYM =dbo.fn_GetPy(name )
最後生成的結果如下:
--把生成的拼音碼轉化爲大寫可以藉助UPPER(str)函數。
SELECT Code ,Name,UPPER(PYM) as PYM FROM DICDEPT_KS