没有附加规则的不区分大小写的搜索?

时间:2009-08-10 12:41:38

标签: mysql collation case-insensitive

我正在尝试在MySQL中找到一个排序规则(我的版本是5.0),其中大小写不同的字符串被认为是相同的,但没有其他规则,如:

á= a

等等。

我试图在这里找到正确的排序规则:http://www.collation-charts.org/mysql60/by-charset.html但似乎我正在寻找的排序规则不存在。

我不能在SQL查询中使用:SELECT ... WHERE lower(column1)= lower(column2)因为列column1和column2上的索引没有被使用然后我的查询很慢。

感谢您的任何建议!

4 个答案:

答案 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)

这将执行不区分大小写。