凯锐

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

得到輸入的中文的首字母拼音的一個函數﹐我忘在什么地方看到的。當時只是運行到我本機上﹐現將其貼出來。可能對用得著的朋友會有幫助的﹗希望原創作者請不要告我哦﹗

Create FUNCTION dbo.fnpbGetPYFirstLetter 

@str NVARCHAR(4000

/*
select dbo. fnpbGetPYFirstLetter ('中國香港')
*/

RETURNS NVARCHAR(4000
--WITH ENCRYPTION 
AS 
BEGIN 
DECLARE @WORD NCHAR(1),@PY NVARCHAR(4000

SET @PY='' 

WHILE LEN(@STR)>0 
BEGIN 
SET @WORD=LEFT(@STR,1

--如果非漢字字符﹐返回原字符 
SET @PY=@PY+(CASE WHEN UNICODE(@WORDBETWEEN 19968 AND 19968+20901 
THEN ( 
SELECT TOP 1 PY 
FROM 

SELECT 'A' AS PY,N'' AS WORD 
UNION ALL SELECT 'B',N'簿' 
UNION ALL SELECT 'C',N'' 
UNION ALL SELECT 'D',N'' 
UNION ALL SELECT 'E',N'' 
UNION ALL SELECT 'F',N'' 
UNION ALL SELECT 'G',N'' 
UNION ALL SELECT 'H',N'' 
UNION ALL SELECT 'J',N'' 
UNION ALL SELECT 'K',N'' 
UNION ALL SELECT 'L',N'' 
UNION ALL SELECT 'M',N'' 
UNION ALL SELECT 'N',N'' 
UNION ALL SELECT 'O',N'' 
UNION ALL SELECT 'P',N'' 
UNION ALL SELECT 'Q',N'' 
UNION ALL SELECT 'R',N'' 
UNION ALL SELECT 'S',N'' 
UNION ALL SELECT 'T',N'' 
UNION ALL SELECT 'W',N'' 
UNION ALL SELECT 'X',N'' 
UNION ALL SELECT 'Y',N'' 
UNION ALL SELECT 'Z',N'' 
) T 
WHERE WORD>=@WORD COLLATE CHINESE_PRC_CS_AS_KS_WS 
ORDER BY PY ASC 

ELSE @WORD 
END
SET @STR=RIGHT(@STR,LEN(@STR)-1
END 

RETURN @PY 

END

Go




posted on 2006-06-19 14:18  凯锐  阅读(902)  评论(1编辑  收藏  举报