中文拼音轉換內置函數

SqlServer中文拼音轉換內置函數

create   function   [dbo].f_GetPy(@str   nvarchar(4000))     
returns   nvarchar(4000)     
as     
begin     
declare   @strlen   int,@re   nvarchar(4000)     
declare   @t   table(chr   nchar(1)   collate   Chinese_PRC_CI_AS,letter   nchar(1))     
insert   into   @t(chr,letter)     
    select   '吖 ', 'A '   union   all   select   '八 ', 'B '   union   all     
    select   '嚓 ', 'C '   union   all   select   '咑 ', 'D '   union   all     
    select   '妸 ', 'E '   union   all   select   '發 ', 'F '   union   all     
    select   '旮 ', 'G '   union   all   select   '鉿 ', 'H '   union   all     
    select   '丌 ', 'J '   union   all   select   '咔 ', 'K '   union   all     
    select   '垃 ', 'L '   union   all   select   '嘸 ', 'M '   union   all     
    select   '拏 ', 'N '   union   all   select   '噢 ', 'O '   union   all     
    select   '妑 ', 'P '   union   all   select   '七 ', 'Q '   union   all     
    select   '呥 ', 'R '   union   all   select   '仨 ', 'S '   union   all     
    select   '他 ', 'T '   union   all   select   '屲 ', 'W '   union   all     
    select   '夕 ', 'X '   union   all   select   '丫 ', 'Y '   union   all     
    select   '帀 ', 'Z '     
    select   @strlen=len(@str),@re= ' '     
    while   @strlen> 0     
    begin     
        select   top   1   @re=letter+@re,@strlen=@strlen-1     
            from   @t   a   where   chr <=substring(@str,@strlen,1)     
            order   by   chr   desc     
        if   @@rowcount=0     
            select   @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1     
    end     
    return(@re)     
end  

Oracle拼音中文拼音轉換內置函數:

CREATE OR REPLACE FUNCTION F_PINYIN(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS   
     V_COMPARE VARCHAR2(100);    
     V_RETURN VARCHAR2(4000);    
   
     FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS   
     BEGIN   
      RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');    
     END;    
    BEGIN   
   
    FOR I IN 1..NVL(LENGTH(P_NAME), 0) LOOP    
     V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1));    
     IF V_COMPARE >= F_NLSSORT('吖') AND V_COMPARE <= F_NLSSORT('驁') THEN   
      V_RETURN := V_RETURN || 'A';    
     ELSIF V_COMPARE >= F_NLSSORT('八') AND V_COMPARE <= F_NLSSORT('簿') THEN   
      V_RETURN := V_RETURN || 'B';    
     ELSIF V_COMPARE >= F_NLSSORT('嚓') AND V_COMPARE <= F_NLSSORT('錯') THEN   
      V_RETURN := V_RETURN || 'C';    
     ELSIF V_COMPARE >= F_NLSSORT('咑') AND V_COMPARE <= F_NLSSORT('鵽') THEN   
      V_RETURN := V_RETURN || 'D';    
     ELSIF V_COMPARE >= F_NLSSORT('妸') AND V_COMPARE <= F_NLSSORT('樲') THEN   
      V_RETURN := V_RETURN || 'E';    
     ELSIF V_COMPARE >= F_NLSSORT('發') AND V_COMPARE <= F_NLSSORT('猤') THEN   
      V_RETURN := V_RETURN || 'F';    
     ELSIF V_COMPARE >= F_NLSSORT('旮') AND V_COMPARE <= F_NLSSORT('腂') THEN   
      V_RETURN := V_RETURN || 'G';    
     ELSIF V_COMPARE >= F_NLSSORT('妎') AND V_COMPARE <= F_NLSSORT('夻') THEN   
      V_RETURN := V_RETURN || 'H';    
     ELSIF V_COMPARE >= F_NLSSORT('丌') AND V_COMPARE <= F_NLSSORT('攈') THEN   
      V_RETURN := V_RETURN || 'J';    
     ELSIF V_COMPARE >= F_NLSSORT('咔') AND V_COMPARE <= F_NLSSORT('穒') THEN   
      V_RETURN := V_RETURN || 'K';    
     ELSIF V_COMPARE >= F_NLSSORT('垃') AND V_COMPARE <= F_NLSSORT('擽') THEN   
      V_RETURN := V_RETURN || 'L';    
     ELSIF V_COMPARE >= F_NLSSORT('嘸') AND V_COMPARE <= F_NLSSORT('椧') THEN   
      V_RETURN := V_RETURN || 'M';    
     ELSIF V_COMPARE >= F_NLSSORT('拏') AND V_COMPARE <= F_NLSSORT('瘧') THEN   
      V_RETURN := V_RETURN || 'N';    
     ELSIF V_COMPARE >= F_NLSSORT('筽') AND V_COMPARE <= F_NLSSORT('漚') THEN   
      V_RETURN := V_RETURN || 'O';    
     ELSIF V_COMPARE >= F_NLSSORT('妑') AND V_COMPARE <= F_NLSSORT('曝') THEN   
      V_RETURN := V_RETURN || 'P';    
     ELSIF V_COMPARE >= F_NLSSORT('七') AND V_COMPARE <= F_NLSSORT('裠') THEN   
      V_RETURN := V_RETURN || 'Q';    
     ELSIF V_COMPARE >= F_NLSSORT('亽') AND V_COMPARE <= F_NLSSORT('鶸') THEN   
      V_RETURN := V_RETURN || 'R';    
     ELSIF V_COMPARE >= F_NLSSORT('仨') AND V_COMPARE <= F_NLSSORT('蜶') THEN   
      V_RETURN := V_RETURN || 'S';    
     ELSIF V_COMPARE >= F_NLSSORT('侤') AND V_COMPARE <= F_NLSSORT('籜') THEN   
      V_RETURN := V_RETURN || 'T';    
     ELSIF V_COMPARE >= F_NLSSORT('屲') AND V_COMPARE <= F_NLSSORT('鶩') THEN   
      V_RETURN := V_RETURN || 'W';    
     ELSIF V_COMPARE >= F_NLSSORT('夕') AND V_COMPARE <= F_NLSSORT('鑂') THEN   
      V_RETURN := V_RETURN || 'X';    
     ELSIF V_COMPARE >= F_NLSSORT('丫') AND V_COMPARE <= F_NLSSORT('韻') THEN   
      V_RETURN := V_RETURN || 'Y';    
     ELSIF V_COMPARE >= F_NLSSORT('帀') AND V_COMPARE <= F_NLSSORT('咗') THEN   
      V_RETURN := V_RETURN || 'Z';    
     END IF;    
    END LOOP;    
    RETURN V_RETURN;    
   END;  

C# 調用代碼

/// 根據商品名稱獲取商品列表
public List<GoodsInfo> FindByName(string goodsName)
{
string sql = string.Format("Name like '%{0}%' or dbo.f_GetPy(Name) like '{0}%' ", goodsName);
return this.Find(sql);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章