3

我有一个名为:Movieswhit colation的数据库utf8_spanish_ci

里面是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|
 ------------------

欢迎任何想法

4

1 回答 1

5

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

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

返回的示例

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

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

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

或者,全文搜索可能会奏效。

ps 查看使用PDO并停止$var查询。

于 2013-10-14T18:11:48.323 回答