You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中通过T-SQL函数将西里尔文转换为拉丁文?

T-SQL自定义函数:西里尔文转拉丁文转换

我之前在网上搜了一圈,确实没找到现成的T-SQL解决方案来做西里尔文到拉丁文的转换,所以自己写了个函数,亲测能用,分享给大家。

这个函数的核心思路是通过字符映射替换来处理常见的西里尔字符,包括带变音符号的特殊字符,尽可能覆盖常用的转换场景:

函数代码

CREATE OR ALTER FUNCTION dbo.CyrillicToLatin
(
    @InputString NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    -- 基础小写字符映射
    SET @InputString = REPLACE(@InputString, N'а', N'a');
    SET @InputString = REPLACE(@InputString, N'б', N'b');
    SET @InputString = REPLACE(@InputString, N'в', N'v');
    SET @InputString = REPLACE(@InputString, N'г', N'g');
    SET @InputString = REPLACE(@InputString, N'д', N'd');
    SET @InputString = REPLACE(@InputString, N'е', N'e');
    SET @InputString = REPLACE(@InputString, N'ё', N'yo');
    SET @InputString = REPLACE(@InputString, N'ж', N'zh');
    SET @InputString = REPLACE(@InputString, N'з', N'z');
    SET @InputString = REPLACE(@InputString, N'и', N'i');
    SET @InputString = REPLACE(@InputString, N'й', N'y');
    SET @InputString = REPLACE(@InputString, N'к', N'k');
    SET @InputString = REPLACE(@InputString, N'л', N'l');
    SET @InputString = REPLACE(@InputString, N'м', N'm');
    SET @InputString = REPLACE(@InputString, N'н', N'n');
    SET @InputString = REPLACE(@InputString, N'о', N'o');
    SET @InputString = REPLACE(@InputString, N'п', N'p');
    SET @InputString = REPLACE(@InputString, N'р', N'r');
    SET @InputString = REPLACE(@InputString, N'с', N's');
    SET @InputString = REPLACE(@InputString, N'т', N't');
    SET @InputString = REPLACE(@InputString, N'у', N'u');
    SET @InputString = REPLACE(@InputString, N'ф', N'f');
    SET @InputString = REPLACE(@InputString, N'х', N'h');
    SET @InputString = REPLACE(@InputString, N'ц', N'ts');
    SET @InputString = REPLACE(@InputString, N'ч', N'ch');
    SET @InputString = REPLACE(@InputString, N'ш', N'sh');
    SET @InputString = REPLACE(@InputString, N'щ', N'sch');
    SET @InputString = REPLACE(@InputString, N'ъ', N'');
    SET @InputString = REPLACE(@InputString, N'ы', N'y');
    SET @InputString = REPLACE(@InputString, N'ь', N'');
    SET @InputString = REPLACE(@InputString, N'э', N'e');
    SET @InputString = REPLACE(@InputString, N'ю', N'yu');
    SET @InputString = REPLACE(@InputString, N'я', N'ya');

    -- 大写字符映射
    SET @InputString = REPLACE(@InputString, N'А', N'A');
    SET @InputString = REPLACE(@InputString, N'Б', N'B');
    SET @InputString = REPLACE(@InputString, N'В', N'V');
    SET @InputString = REPLACE(@InputString, N'Г', N'G');
    SET @InputString = REPLACE(@InputString, N'Д', N'D');
    SET @InputString = REPLACE(@InputString, N'Е', N'E');
    SET @InputString = REPLACE(@InputString, N'Ё', N'Yo');
    SET @InputString = REPLACE(@InputString, N'Ж', N'Zh');
    SET @InputString = REPLACE(@InputString, N'З', N'Z');
    SET @InputString = REPLACE(@InputString, N'И', N'I');
    SET @InputString = REPLACE(@InputString, N'Й', N'Y');
    SET @InputString = REPLACE(@InputString, N'К', N'K');
    SET @InputString = REPLACE(@InputString, N'Л', N'L');
    SET @InputString = REPLACE(@InputString, N'М', N'M');
    SET @InputString = REPLACE(@InputString, N'Н', N'N');
    SET @InputString = REPLACE(@InputString, N'О', N'O');
    SET @InputString = REPLACE(@InputString, N'П', N'P');
    SET @InputString = REPLACE(@InputString, N'Р', N'R');
    SET @InputString = REPLACE(@InputString, N'С', N'S');
    SET @InputString = REPLACE(@InputString, N'Т', N'T');
    SET @InputString = REPLACE(@InputString, N'У', N'U');
    SET @InputString = REPLACE(@InputString, N'Ф', N'F');
    SET @InputString = REPLACE(@InputString, N'Х', N'H');
    SET @InputString = REPLACE(@InputString, N'Ц', N'Ts');
    SET @InputString = REPLACE(@InputString, N'Ч', N'Ch');
    SET @InputString = REPLACE(@InputString, N'Ш', N'Sh');
    SET @InputString = REPLACE(@InputString, N'Щ', N'Sch');
    SET @InputString = REPLACE(@InputString, N'Ъ', N'');
    SET @InputString = REPLACE(@InputString, N'Ы', N'Y');
    SET @InputString = REPLACE(@InputString, N'Ь', N'');
    SET @InputString = REPLACE(@InputString, N'Э', N'E');
    SET @InputString = REPLACE(@InputString, N'Ю', N'Yu');
    SET @InputString = REPLACE(@InputString, N'Я', N'Ya');

    RETURN @InputString;
END;

使用示例

创建好函数之后,就可以直接调用了:

-- 转换小写西里尔文
SELECT dbo.CyrillicToLatin(N'привет мир'); -- 输出: privet mir

-- 转换混合大小写内容
SELECT dbo.CyrillicToLatin(N'ПриВет МИР'); -- 输出: PriVet MIR

-- 转换带特殊变音符号的内容
SELECT dbo.CyrillicToLatin(N'ёж щука'); -- 输出: yozh schuka

注意事项

  • 这个函数覆盖了标准俄语西里尔字符的转换,如果需要支持其他斯拉夫语言的西里尔字符(比如乌克兰语、保加利亚语的特殊字符),可以自行添加对应的REPLACE语句。
  • 对于一些罕见的变音符号字符,可能需要额外补充映射规则来适配。

内容的提问来源于stack exchange,提问作者Przemyslaw Remin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:07:27