首頁  >  文章  >  資料庫  >  如何在 MySQL 中執行變音符號不敏感搜尋?

如何在 MySQL 中執行變音符號不敏感搜尋?

Susan Sarandon
Susan Sarandon原創
2024-11-01 12:38:02907瀏覽

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