1

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

á = 一个

等等。

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

我不能在 SQL 查询中使用: SELECT ... WHERE lower(column1) = lower(column2) 因为列 column1 和 column2 上的索引当时不使用,而且我的查询非常慢。

感谢您的任何建议!

4

4 回答 4

1

有人给了我一个建议:只需有这样的表:id、word、word_in_lowercase .. 数据确实是多余的,但否则它可以满足我的所有需求。

word_in_lowercase 的自动更新可以通过触发器或一些额外的编程来完成。

于 2009-08-23T09:11:48.900 回答
0

有问题的表中设置了哪种类型的排序规则?我目前正在使用很多表,utf8_hungarian_ci因为这个表不区分大小写。

于 2009-08-10T12:47:13.413 回答
0

http://dev.mysql.com/doc/refman/5.0/en/case-sensitive.html表示默认情况下非二进制字符串不区分大小写。你有没有测试过如果不使用lower()就不能正常工作?

于 2009-08-10T12:51:06.817 回答
0

为什么不使用 MySQL 的全文搜索功能进行搜索查询?

对于像你这样的任务,我正在使用 MATCH AGAINST 功能。

阅读 mysql.com 上的规范以使其清楚 -链接

一个例子:

SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)

这将不区分大小写。

于 2009-08-10T12:55:08.627 回答