SQL server中表數據自動生成拼音碼

總結將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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章