输入一串中文,获取拼音首字母。例如“靓仔”,返回“LZ”。
CREATE FUNCTION [dbo].[uf_GetPY](@str NVARCHAR(4000))
RETURNS NVARCHAR(4000)
AS
BEGIN
SET @str = RTRIM(@str)
DECLARE
@word NCHAR(1),
@PY NVARCHAR(4000)
SET @PY = ''
WHILE len(@str) > 0
BEGIN
--处理常用多音字
IF len(@str) >= 2
BEGIN
IF left(@str, 2) = '重庆'
BEGIN
SET @PY = @PY + 'CQ'
IF LEN(@str) > 2
SET @str = right(@str, len(@str) - 2)
ELSE
SET @str = ''
END
IF left(@str, 2) = '西藏'
BEGIN
SET @PY = @PY + 'XZ'
IF LEN(@str) > 2
SET @str = right(@str, len(@str) - 2)
ELSE
SET @str = ''
END
IF left(@str, 2) = '藏族'
BEGIN
SET @PY = @PY + 'ZZ'
IF LEN(@str) > 2
SET @str = right(@str, len(@str) - 2)
ELSE
SET @str = ''
END
END
--汉字返回拼音首字母
IF LEN(@str) > 0
BEGIN
SET @word = left(@str, 1)
SET @PY = @PY + (CASE
WHEN unicode(@word) BETWEEN 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
END
RETURN @PY
END
GO
调用函数即可
SELECT dbo.uf_GetPY('靓仔')
SELECT dbo.uf_GetPY('恭喜发财')