首页  >  文章  >  数据库  >  如何在 MySQL 中执行变音符号不敏感搜索?

如何在 MySQL 中执行变音符号不敏感搜索?

Susan Sarandon
Susan Sarandon原创
2024-11-01 12:38:02812浏览

How to Perform Diacritic Insensitive Searches in MySQL?

MySQL 变音符号不敏感搜索

使用包含重音符号的西班牙语单词时,在考虑变音符号的同时执行搜索查询可能会很困难。本文提供了一种使用字符集和排序规则组合在 MySQL 数据库中执行变音符号不敏感搜索的解决方案。

提供的示例:

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

未考虑变音符号差异,可能搜索“lapiz”时排除包含“lápiz”等单词的结果。

为了实现变音符号不敏感,可以使用 MySQL 命令 SET NAMES 为数据库连接指定特定的字符集和排序规则。通过将字符集设置为 latin1 并将排序规则设置为不区分重音的排序规则,查询可以匹配带重音和不带重音的单词。

示例:

SET NAMES latin1;
SELECT 'lápiz' LIKE 'lapiz';

此查询将返回 0,表示“lápiz”和“lapiz”不相等。

切换到 utf8 字符集:

SET NAMES utf8;
SELECT 'lápiz' LIKE 'lapiz';

查询将返回 1,说明搜索现在不区分变音符号。

要显式指定模式应与 UTF-8 字符串匹配,可以使用 _utf8 前缀:

SET NAMES latin1;
SELECT _utf8'lápiz' LIKE _utf8'lapiz';

在此示例中,查询将返回 1,确认变音符号不敏感,即使显式使用 latin1 字符集也是如此。

要进一步了解,请参阅有关字符集支持的 MySQL 文档。

以上是如何在 MySQL 中执行变音符号不敏感搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn