我遇到了一个简单的选择查询和特殊字符的问题。我想选择名字Änne。
SELECT * FROM `names` WHERE `name` = 'Änne'
utf8_general_ci
- 安妮
- 安妮
好的, ...
utf8 通用 ci 是一个非常简单的排序规则。它所做的只是删除所有重音然后转换为大写并使用这种“基本字母”结果字母的代码进行比较。 http://forums.mysql.com/read.php?103,187048,188748
utf8_unicode_ci
- 安妮
- 安妮
为什么?
utf8_bin
- 安妮
utf8_bin 在这一点上似乎是正确的选择,但我必须不区分大小写。
SELECT * FROM `names` WHERE `name` = 'änne'
utf8_bin
- 没有任何
有没有办法这样做?
我可以使用 php ucwords() 将第一个字母大写,但我更愿意找到一个数据库解决方案。编辑:ucwords('änne') = änne,所以我也不能使用它
SELECT * FROM `names` WHERE lower(`name`) = 'änne'
正在为我工作,因为我的数据库中的“Änne”和“änne”之间没有区别。