1. 程式人生 > >sql server自動生成拼音首字母的函式 .

sql server自動生成拼音首字母的函式 .

建立一個查詢,執行下面的語句生成函式fn_GetPy
--生成拼音首碼 
  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 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


測試:
SELECT Product_ID , dbo.fn_GetPy(Product_Name) AS pymc
FROM    dbo.T_Product

建立一個查詢,執行下面的語句生成函式fn_GetPy
--生成拼音首碼 
  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 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


測試:
SELECT Product_ID , dbo.fn_GetPy(Product_Name) AS pymc
FROM    dbo.T_Product