首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 取得漢字拼音首字母的純 T-SQL 函數實作

     編輯:關於SqlServer

在 SQL Server 中若需將中文字轉為拼音首字母(如排序、檢索),可透過純 T-SQL 純量函數實現,無需 CLR 或外部元件。以下函數 fun_getPY 接收 NVARCHAR 字串,逐字判斷 Unicode 範圍,對漢字查表對應首字母,非漢字原樣保留。

函數程式碼

CREATE FUNCTION fun_getPY
(
    @str NVARCHAR(4000)
)
RETURNS NVARCHAR(4000)
AS
BEGIN
    DECLARE @word NCHAR(1), @PY NVARCHAR(4000)
    SET @PY = ''
    WHILE LEN(@str) > 0
    BEGIN
        SET @word = LEFT(@str, 1)
        -- 判斷是否為常用漢字區段 (19968~40869)
        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
    RETURN @PY
END

原理說明

函數利用 Unicode 碼位範圍判斷是否為漢字,再以內嵌的拼音分界字對照表(按拼音順序排列的代表字),透過 COLLATE Chinese_PRC_CS_AS_KS_WS 進行二分查找式比對,取得首字母。非漢字字元直接保留。適用於中文排序、簡拼檢索等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved