sql-server - 如何让 SQL Server 识别唯一的泰语字符?
问题描述
这是我的桌子:
id name
1 ទឹក កាបូន
2 លីអូ បៀរ
3 ស្របៀរ ២៤
4 ស្រាបៀរ ឌ្រាប់
当我使用这个语句查询时:SELECT * FROM t1 WHERE name = N'លីអូ បៀរ'
,它返回所有行。这很奇怪,因为那些泰语字符是不同的。
此外,如果我将名称列设为唯一,这将导致问题。有没有人遇到同样的问题,有什么可能的解决方法?我尝试更改排序规则,但仍然无济于事。
解决方案
如何让 SQL Server 识别唯一的泰语字符?
必应翻译将这些字符识别为高棉语,而不是泰语。因此,您需要为这些字符选择具有特定语言规则的排序规则,例如
drop table if exists t1
create table t1(id int, name nvarchar(200) collate Khmer_100_CI_AI )
insert into t1(id,name)
values (1, N'ទឹក កាបូន'),(2, N'លីអូ បៀរ'),(3, N'ស្របៀរ ២៤'),(4, N'ស្រាបៀរ ឌ្រាប់')
SELECT * FROM t1 WHERE name = N'លីអូ បៀរ'
或者使用二进制排序规则,它只是通过它们的代码点值来比较字符。例如
drop table if exists t1
create table t1(id int, name nvarchar(200) collate Latin1_General_100_BIN2 )
insert into t1(id,name)
values (1, N'ទឹក កាបូន'),(2, N'លីអូ បៀរ'),(3, N'ស្របៀរ ២៤'),(4, N'ស្រាបៀរ ឌ្រាប់')
SELECT * FROM t1 WHERE name = N'លីអូ បៀរ'
甚至一些较新的拉丁语排序规则也可以使用,例如
drop table if exists t1
create table t1(id int, name nvarchar(200) collate Latin1_General_100_CI_AI )
insert into t1(id,name)
values (1, N'ទឹក កាបូន'),(2, N'លីអូ បៀរ'),(3, N'ស្របៀរ ២៤'),(4, N'ស្រាបៀរ ឌ្រាប់')
SELECT * FROM t1 WHERE name = N'លីអូ បៀរ'
推荐阅读
- salesforce - Mule4:使用 OffSet 和 LIMIT 实现 parallel-foreach 来查询 Saleforces
- monitor - 在 Windows 10 中阻止部分屏幕损坏显示器
- python - 带有 MQTT 订阅的 Python Flask 服务器 on_message 不工作
- python - 循环遍历唯一条目
- php - 如何捕获 SSH 命令输出包含子字符串?- Laravel 5.8
- python - 消息:“chromedriver”可执行文件需要在 PATH 中。请参阅 https://sites.google.com/a/chromium.org/chromedriver/home
- javascript - Select2 TokenSeparators 不适用于 S2MultiCheckboxes 扩展
- reactjs - 在反应钩子中一一悬停项目时出错
- azure - Terraform Azure AKS - Terraform 计划因“连接被拒绝”错误而失败
- python - 根据创建方法列出 __size__() 结果