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中文網其他相關文章!