我正在尝试在MySQL中找到一个排序规则(我的版本是5.0),其中大小写不同的字符串被认为是相同的,但没有其他规则,如:
á= a
等等。
我试图在这里找到正确的排序规则:http://www.collation-charts.org/mysql60/by-charset.html但似乎我正在寻找的排序规则不存在。
我不能在SQL查询中使用:SELECT ... WHERE lower(column1)= lower(column2)因为列column1和column2上的索引没有被使用然后我的查询很慢。
感谢您的任何建议!
答案 0 :(得分:1)
我得到了一个建议:只需要这样的表:id,word,word_in_lowercase ..数据是多余的,但它满足了我的所有需求。
word_in_lowercase的自动更新可以通过触发器或其他一些编程来完成。
答案 1 :(得分:0)
有问题的表格中设置了哪种类型的排序规则?我目前正在使用utf8_hungarian_ci
的很多表,因为这个表不区分大小写。
答案 2 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html表示非二进制字符串默认情况下不区分大小写。如果没有使用lower(),你是否测试过它是否工作不正常?
答案 3 :(得分:0)
为什么不使用MySQL的全文搜索功能进行搜索查询?
对于像你这样的任务我正在使用MATCH AGAINST功能。
阅读mysql.com上的规范,明确指出 - Link
一个例子:
SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)
这将执行不区分大小写。