[英]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.