在MySql中对口音不敏感的搜索

时间:2013-10-14 18:04:42

标签: php mysql

我有一个名为Movies whit colation utf8_spanish_ci

的数据库

inside是表peliculas白色排序utf8_spanish2_ci

在字段nombre内置归类utf8_spanish2_ci内。

字段名称白色口音中的数据保存如下:

La Cacería    // La cacería
El círculo    // El círculo

实际上我使用查询:SELECT * FROM peliculas WHERE nombre like '%$string%'但是如果我没有重音搜索就不会产生任何结果。

所以

查询搜索和结果应为:

|query    | Result |
|------------------|
|circulo  | círculo|
|caceria  | Cacería|
 ------------------

欢迎任何想法

1 个答案:

答案 0 :(得分:5)

相信您需要指定COLLATE作为SQL语句的一部分。

SELECT  *
FROM    peliculas
WHERE   nombre LIKE '%circulo%' COLLATE utf8_unicode_ci;

example返回:

+-----+------------+
| ID  | NOMBRE     |
+-----+------------+
| 2   | El círculo |
+-----+------------+

(我没有在查询中使用í,但仍然能够返回El círculo

我应该注意,如果您没有设置数据库编码,并且您实际上将每个“重音”存储为Ã,那么您将遇到更多问题。这仅适用于数据库本身具有原始未替换值的基础。

或者,全文搜索可能会成功。

P.S。请继续使用PDO并停止在查询中放置$var