2

我有一个土耳其语的令牌表;它的默认排序规则是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'

那不是我想要的。

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

请提供任何帮助

4

2 回答 2

2

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

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

请参阅二元运算符的文档。

于 2014-03-18T07:45:23.453 回答
1

土耳其语排序规则是latin5_turkish_ci. 请参阅:MySQL 中的字符集和排序规则

使用- 子句COLLATE中的关键字WHERE

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

我还没有测试过。我希望它有所帮助。

请参阅:在 SQL 语句中使用 COLLATE表达式排序规则

于 2014-03-17T13:27:32.547 回答