SQL從中文中獲取拼音首字母


今天做開發,客戶要求,輸入拼音首字母,就能獲取表中所有客戶名稱。

 

步驟:在數據庫上造個函數,然后調用這個函數即可

 

1 select dbo.fnpbGetPYFirstLetter(FName) as chinaname,FName from t_Organization
2 
3 --fnpbGetPYFirstLetter()    函數名
4 --FName        參數
 1 --全部扔進去執行,不用修改
 2 Create FUNCTION dbo.fnpbGetPYFirstLetter   
 3 (   
 4 @str NVARCHAR(4000)   
 5 )   
 6 /*  
 7 select dbo. fnpbGetPYFirstLetter ('中國香港')  
 8 */  
 9 RETURNS NVARCHAR(4000)   
10 --WITH ENCRYPTION   
11 AS   
12 BEGIN   
13 DECLARE @WORD NCHAR(1),@PY NVARCHAR(4000)   
14   
15 SET @PY=''   
16   
17 WHILE LEN(@STR)>0   
18 BEGIN   
19 SET @WORD=LEFT(@STR,1)   
20   
21 --如果非漢字字符﹐返回原字符   
22 SET @PY=@PY+(CASE WHEN UNICODE(@WORD) BETWEEN 19968 AND 19968+20901   
23 THEN (   
24 SELECT TOP 1 PY   
25 FROM   
26 (   
27 SELECT 'A' AS PY,N'' AS WORD   
28 UNION ALL SELECT 'B',N'簿'   
29 UNION ALL SELECT 'C',N''   
30 UNION ALL SELECT 'D',N''   
31 UNION ALL SELECT 'E',N''   
32 UNION ALL SELECT 'F',N''   
33 UNION ALL SELECT 'G',N''   
34 UNION ALL SELECT 'H',N''   
35 UNION ALL SELECT 'J',N''   
36 UNION ALL SELECT 'K',N''   
37 UNION ALL SELECT 'L',N''   
38 UNION ALL SELECT 'M',N''   
39 UNION ALL SELECT 'N',N''   
40 UNION ALL SELECT 'O',N''   
41 UNION ALL SELECT 'P',N''   
42 UNION ALL SELECT 'Q',N''   
43 UNION ALL SELECT 'R',N''   
44 UNION ALL SELECT 'S',N''   
45 UNION ALL SELECT 'T',N''   
46 UNION ALL SELECT 'W',N''   
47 UNION ALL SELECT 'X',N''   
48 UNION ALL SELECT 'Y',N''   
49 UNION ALL SELECT 'Z',N''   
50 ) T   
51 WHERE WORD>=@WORD COLLATE CHINESE_PRC_CS_AS_KS_WS   
52 ORDER BY PY ASC   
53 )   
54 ELSE @WORD   
55 END)   
56 SET @STR=RIGHT(@STR,LEN(@STR)-1)   
57 END   
58   
59 RETURN @PY   
60   
61 END  
62   
63 Go  
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM