比较 SQL 服务器中的组合变音符和拉丁语扩展附加,C#
Compare Combining Diacritical Marks and Latin Extended Additional in SQL Server, C#
问题:下面两个相同的词不相等(在控制台中尝试 "PHƯỢNG" == "PHƯỢNG")
- PHƯỢNG
- PHƯỢNG
描述 :
第一个单词中的'Ợ'字符使用组合变音符号:U+01A0 + U+0323。这是来自数据库
的数据
而第二个使用拉丁扩展附加:U+1EE2。这是通过越南语言环境键盘
输入的数据
这些话是越南语
Output : 虽然在 Unicode 块中有差异,但我想比较上面的两个词 在 Microsoft SQL Server[=51] 中相等=]
更多信息:
SqlCommand
: [Table] 整理 Vietnamese_CI_AI_KI_WI 像 N'%'+@Input+'%'
更多单词测试:
单词:Ế [U+1EBE] 和 Ế [U+00CA , U+0301]
- TIẾN
- TIẾN
WORD : Ờ [U+1EDC] 和 Ờ [U+01A0, U+0300]
- TRƯỜNG
- TRƯỜNG
无法在 SQL 中进行比较,因为 SQL 不支持规范化 unicode 字符。 比较具有不同 unicode 编码的 unicode 字段的唯一方法(一种使用组合变音标记 Picture 1
一种使用拉丁扩展额外的块 Picture 2
是 将它们 标准化为 一个分解的 这是 Picture 1
或 完全合成它 就像 Picture 3
.
这是概念:
- Select 您想要比较的所有字段数据并将它们存储到您想要的任何内容中(数组,列表 - select 通过 EF,数据表通过 sqlcommand)
- 然后通过循环和调用String.Normalize将它们全部归一化并调用String.Normalize取决于您的选择,您可以指定字符串归一化为完全复合(每个重音符是一个unicode字符)或分解它:只有一个字符代表
Ợ
- 终于可以正常过滤了
图片1
图片2
图3
参考:
- What does .NET's String.Normalize do ? - Whosebug
- String normalize method - Microsoft Document
问题:下面两个相同的词不相等(在控制台中尝试 "PHƯỢNG" == "PHƯỢNG")
- PHƯỢNG
- PHƯỢNG
描述 :
第一个单词中的'Ợ'字符使用组合变音符号:U+01A0 + U+0323。这是来自数据库
的数据而第二个使用拉丁扩展附加:U+1EE2。这是通过越南语言环境键盘
输入的数据这些话是越南语
Output : 虽然在 Unicode 块中有差异,但我想比较上面的两个词 在 Microsoft SQL Server[=51] 中相等=]
更多信息:
SqlCommand
: [Table] 整理 Vietnamese_CI_AI_KI_WI 像 N'%'+@Input+'%'
更多单词测试:
单词:Ế [U+1EBE] 和 Ế [U+00CA , U+0301]
- TIẾN
- TIẾN
WORD : Ờ [U+1EDC] 和 Ờ [U+01A0, U+0300]
- TRƯỜNG
- TRƯỜNG
无法在 SQL 中进行比较,因为 SQL 不支持规范化 unicode 字符。 比较具有不同 unicode 编码的 unicode 字段的唯一方法(一种使用组合变音标记 Picture 1
一种使用拉丁扩展额外的块 Picture 2
是 将它们 标准化为 一个分解的 这是 Picture 1
或 完全合成它 就像 Picture 3
.
这是概念:
- Select 您想要比较的所有字段数据并将它们存储到您想要的任何内容中(数组,列表 - select 通过 EF,数据表通过 sqlcommand)
- 然后通过循环和调用String.Normalize将它们全部归一化并调用String.Normalize取决于您的选择,您可以指定字符串归一化为完全复合(每个重音符是一个unicode字符)或分解它:只有一个字符代表 Ợ
- 终于可以正常过滤了
参考:
- What does .NET's String.Normalize do ? - Whosebug
- String normalize method - Microsoft Document