簡體   English   中英

在InnoDB MySQL表中重音不敏感搜索!

[英]Accent insensitive search in InnoDB MySQL table!

我正在研究一個簡單的搜索腳本,該腳本通過特定表的兩列進行查找。 本質上,我正在尋找公司編號或名稱之間的匹配。 我在SQL中使用LIKE語句,因為我正在使用InnoDB表(這意味着沒有全文本搜索)。

問題是我在雙語環境(法語和英語)中工作,法語中的某些字符帶有重音。 我希望帶重音符號的字符與不帶重音符號的字符相同,換句話說,就是é= e,e =é,à= a等。因此,有很多與此問題相關的問題,但似乎都沒有問題為了我。

這是我的SQL語句:

SELECT id, name FROM clients WHERE id LIKE '%éc%' OR name LIKE '%éc%';

我希望找到“école”和“ ecole”,但只能找到“école”。

我還要指出,我的表都是utf8_general_ci。

幫我StackOverflow,您是我唯一的希望! :)

我將為您提供另一個答案。

我剛剛讀到utf8_general_ci不區分重音,所以您應該沒問題。

一種解決方案是使用

 mysql_query("SET NAMES 'utf8'"); 

這告訴客戶端使用什么字符集發送SQL語句。

另一個解決方案似乎是使用MySQL的HEX()函數將重音字符轉換為其十六進制值。 但是我找不到任何有效的例子,在閱讀完HEX()的MySQL文檔后,它似乎可能無法工作。

您可能應該考慮將問題字符轉換為英文字符,然后將它們存儲在不同的列中,該列可能稱為searchable或類似的。 每當更新主列時,您都將需要對此進行更新。

然后,您將有兩列,一列包含帶重音符號的字符,另一列包含純英文可搜索的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM