一尘不染

MySQL变音符号不敏感搜索(西班牙口音)

mysql

我有一个MySQL数据库,其单词包含西班牙语(áéíóú)的重音。我想知道是否有任何方法可以进行变音符号不敏感搜索。例如,如果我搜索“
lapiz”(不带重音),我想从数据库中获取包含“lápiz”一词的结果。我当前执行查询的方式如下:

$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");

这是一家在线商店,所以我不知道人们会搜索什么……“ lapiz”只是一个例子。

替代文字http://www.freeimagehosting.net/uploads/0e7c2ae7d5.png

谢谢!


阅读 306

收藏
2020-05-17

共1个答案

一尘不染

字符集和排序规则,不是我的最爱,但它们确实起作用:

mysql> SET NAMES latin1;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     0 | 
+-----------------------+
1 row in set (0.01 sec)

mysql> SET NAMES utf8;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     1 | 
+-----------------------+


mysql> SET NAMES latin1;
mysql> SELECT _utf8'lápiz' LIKE _utf8'lapiz' ;
+---------------------------------+
| _utf8'lápiz' LIKE _utf8'lapiz' |
+---------------------------------+
|                               1 | 
+---------------------------------+

在手册中读的不错的一章:字符集支持

2020-05-17