我遇到了一个小麻烦:
SELECT * FROM tableName tn WHERE LOWER(tn.name) = LOWER('place_string_here');
没关系,当它完美契合时:
tn.name = orange_tree
place_string_here = Orange_Tree
但我的问题是:国家角色,例如:
Hästgård
我希望“Hästgård”适合: Hästgård, Hästgard, Hastgård和/或 Hastgard
有没有聪明的方法可以做到这一点?
答案 0 :(得分:2)
您可以使用:
您的查询:
SELECT *
FROM tableName tn
WHERE tn.name COLLATE 'utf8_general_ci' = 'place_string_here'
<强> SQLFIDDLExample 强>
VALUES
('Hästgård', 'admin@sqlfiddle.com'),
('Twitter', '@sqlfiddle');
查询:
select id, type
from t
where type COLLATE 'utf8_general_ci' = 'hastgard'
结果:
| ID | TYPE |
-----------------
| 1 | Hästgård |
答案 1 :(得分:0)
我在该字段上有latin1_swedish_ci COLLATION,这会导致错误。 将排序规则更改为utf8_general_ci(“名称”字段)后,它开始正常工作: - )