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中文网其他相关文章!