簡體   English   中英

對非拉丁字符不敏感的SQL查詢?

[英]SQL query that is insensitive towards non-latin characters?

有沒有辦法我可以用where子句編寫一個select查詢,忽略非拉丁字符?

例如,有立陶宛字符Ė ,顯然拉丁字符的等價物是E 那么無論如何我可以寫這樣的查詢:

SELECT * FROM `table` WHERE `keyword` LIKE %E%;

我希望它返回包含任何這些字符的所有記錄: E,Ė,Ę ,有什么方法可以用SQL自動實現這個(甚至在PHP級別)?

你沒說你嘗試過的。 您也沒有說出您的table包含的字符集(utf-8)和排序規則。 這些是你默認控制這些東西的方法。

你可以試試這個:

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E%

或這個

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E%

我不知道第二個是否適合你想要的東西,因為我不認識立陶宛語。 E,Ė和Ę在字典中被認為是同一個字母嗎? 如果他們不是 ,那么立陶宛的整理將不會相互匹配。

如果確實發現特定的排序規則有效,則可以更改列以默認使用該排序規則。

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci

這是一個好主意,因為那時你有機會索引加速你的搜索。

暫無
暫無

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

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