php - MySQL 变音符号不敏感搜索(西类牙口音)

标签 php mysql character-encoding

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

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

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

alt text http://www.freeimagehosting.net/uploads/0e7c2ae7d5.png

谢谢!

最佳答案

字符集和排序规则,不是我最喜欢的,但它们确实有效:

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 | 
+---------------------------------+

手册中有一个不错的章节:Character Set Support

关于php - MySQL 变音符号不敏感搜索(西类牙口音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304464/

相关文章:

php - 如何获得这个日期/时间格式?

php - 在 php 中查找特定多维数组值的 max()

php - 如何使用 PHP GD 放大图像?

mysql - 使用准备好的查询使用 Go 创建新的 MySQL 数据库

mysql - 计算最低距离点GeoJSON + Mysql + Node

php - 如何在 Php 中显示来自 sql 的德国变音符号 (ü, ä, ö)?

c# - 在 utf-8 json 上转义重音字符

php - 如何连接 mysql 中两个不同表的数据(LEFT JOIN)?

php - 在html中为<option value ="...">提供多个值,并使用PHP将这些值排序到MySQL中的相应列中

encoding - 字母表的明确二进制编码方案