gpt4 book ai didi

python - 对 Microsoft Server 2012 的 Unicode 查询返回过多结果

转载 作者:行者123 更新时间:2023-11-30 23:19:58 24 4
gpt4 key购买 nike

我不断从我们的 MSSQL 服务器收到无法解释的意外行为。

示例:请求

"""select * from vernacularname where (vernacularname = N'ᐱᓯᐢᑭᐤ')"""

返回正确的结果(id、白话名、语言)

1 ᐱᓯᐢᑭᐤ cr

还有一大堆其他 unicode 名称,我不知道它们是如何连接的,例如:

1 ܚܝܘܬܐ None
1 ᓂᕐᔪᑦ iu
1 እንስሳ ti
5 ፈንገስ am
6 ᐱᕈᖅᑐᖅ iu
6 ᐅᐲᑭᒋᑳᓇ cr
6 ގަސް dv
212 ᐱᔦᓰᐢ cr
212 ᏥᏍᏆ None
212 ወፍ am
212 བྱ། bo
216 𐌹𐌽𐍃𐌴𐌺𐍄𐌰 None
216 ሓሽራ ti
359 འུ་འཐུང་སྲོག་ཆགས། bo
359 ጡት አጥቢ am
359 ᐱᓱᒃᑎ iu
360 རྟ་བླ། bo
459 ᎠᏓᏢᎢᎯ None

我使用 python2.6.5 和 pyodbc 发送查询。 (pymssql根本不处理unicode查询)

任何有关问题所在的线索都值得赞赏。非常感谢!

克里斯托夫

最佳答案

通过在 WHERE 条件中添加 COLLATE 来指定 Latin1_General_BIN 排序规则,以强制使用二进制排序规则比较 unicode 值:

select *
from vernacularname
where (vernacularname COLLATE Latin1_General_BIN = N'ᐱᓯᐢᑭᐤ')

这是 SQL Server 处理 WHERE 子句条件比较的结果,它不是特定于 python 或 pyodbc。通过查看 original 之间的结果差异,我们可以证明 SQL Server 是罪魁祸首。和 updated查询。

参见Bart Duncan's reply here以获得更详细的解释。

关于python - 对 Microsoft Server 2012 的 Unicode 查询返回过多结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25787930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com