mysql查询选择喜欢带有变音符号的土耳其字母

Posted

技术标签:

【中文标题】mysql查询选择喜欢带有变音符号的土耳其字母【英文标题】:mysql query select like with diacritic Turkish letters 【发布时间】:2014-03-17 13:02:24 【问题描述】:

我有一个土耳其语的令牌表; 它的默认排序规则是 utf8_general_ci 在 FreeBSD 服务器上,mysql 版本是 5.6.15

我要查询;

select * from tokens where type like 'âmâ';

select * from tokens where type='âmâ';

通过这些查询, 结果必须是“âmâ”的唯一结果(在土耳其语中也表示“盲人”) 但我有四个原始结果;

result 1 "amâ" means 'but'
result 2 "ama" means 'but'
result 3 "âma" means 'blind'
result 4 "âmâ" means 'blind'

这不是我想要的。

我尝试了不同的排序规则、字符集和名称。 但与工作的结果相同。

请帮忙

【问题讨论】:

你可以试试 select * from tokens where binary type='âmâ'; ? 解决了,非常感谢... 【参考方案1】:

您可以强制进行二进制比较:

SELECT * FROM tokens WHERE BINARY type='âmâ';

请参阅binary operator 的文档。

【讨论】:

【参考方案2】:

土耳其语排序规则是latin5_turkish_ci。请参阅:Character Sets and Collations in MySQL。

WHERE 子句中使用COLLATE 关键字。

SELECT *
FROM tokens
WHERE type = 'âmâ' COLLATE latin5_turkish_ci;

我没有测试过。希望对你有帮助。

请参阅:Using COLLATE in SQL Statements 和 Collation of Expressions。

【讨论】:

谢谢,但它给出了错误 "/* SQL 错误 (1253): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf8' */" 因为我的默认排序规则是 utf8_general_ci 如果有utf8_turkish_ci 排序规则,你也可以试试那个。

以上是关于mysql查询选择喜欢带有变音符号的土耳其字母的主要内容,如果未能解决你的问题,请参考以下文章

带有变音符号的 xcodebuild 目标名称

带有德语变音符号的 NSJSONSerialization 异常

UTF-8 解码变音符号偶尔会失败

带有德语变音符号的 JSON Jackson + HTTPClient

带有德语变音符号的 iOS 上的 FacebookDisplayName

有没有办法在 robocopy 脚本中包含带有变音符号的文件路径?