有什么方法可以用select
子句编写where
查询,忽略非拉丁字符?
例如,有立陶宛字符Ė
,显然拉丁字符的等效字符为E
。所以我还是可以这样写一个查询:
SELECT * FROM `table` WHERE `keyword` LIKE %E%;
我希望它返回包含任何这些字符的所有记录:E,Ė,Ę
,有什么方法可以用SQL自动实现这个(甚至在PHP级别)?
答案 0 :(得分:2)
你没说你尝试过的。您也没有说明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
这是一个好主意,因为那时你有机会为你的搜索加速索引。