【问题标题】:Convert Non-English text into English text using SQL使用 SQL 将非英文文本转换为英文文本
【发布时间】:2015-10-01 09:17:25
【问题描述】:

我有文本规范化方法,我用它将非英文字母转换为英文字母。

我需要使用 SQL Server 执行相同的功能


C#方法:

  private  string normalizeString(string inputWord)
        {
            StringBuilder stringBuilder = new StringBuilder();
            foreach (char c in inputWord.Trim().ToCharArray())
            {
                string normalizedChar = c.ToString()
                    .Normalize(NormalizationForm.FormD).Substring(0, 1);

                stringBuilder.Append(normalizedChar);
            }

            return stringBuilder.ToString();
        }

示例

Ä => A
ä => a
Ö => O
ö => o
Õ => O
õ => o
Ü => U
ü => u

【问题讨论】:

  • 你能再澄清一下你的问题吗?字母“A”和“a”在 Unicode 中称为拉丁字母,而不是英文字母。它们以多种语言存在(例如西班牙语、意大利语),不仅仅是英语。您是否要删除所有变音符号?还是只是某些变音符号?或者只是拉丁字母的变音符号?还是只有出现在拉丁字母表中的字母?因为西里尔字母也可以有变音符号!您正在寻找的操作有多复杂? Unicode 很难。 FWIW,Unicode Normalization Forms are defined here
  • 是的,我想删除所有变音符号。

标签: c# sql sql-function


【解决方案1】:

如果你想删除变音符号,你可以使用Collate

例如:

选择“áéíóú”整理 SQL_Latin1_General_Cp1251_CS_AS

这将返回“aeiou”

Source

【讨论】:

    【解决方案2】:

    根据Question,SQL Server 中没有这样的本机函数。 您可以为此创建一个CLR Function。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2021-04-09
      • 2016-11-21
      相关资源
      最近更新 更多