4

我遇到了一个小麻烦:

SELECT * FROM tableName tn WHERE LOWER(tn.name) = LOWER('place_string_here');

没关系,当它完美契合时:

tn.name =橙树

place_string_here =橙树

但我的问题是:民族人物,例如:

哈斯特加德

我希望“Hästgård”适合:Hästgård、Hästgard、Hastgård 和/或 Hastgard

有什么聪明的方法可以做到这一点吗?

4

2 回答 2

2

您可以使用:

您的查询:

SELECT * 
FROM tableName tn 
WHERE tn.name COLLATE 'utf8_general_ci' = 'place_string_here'

SQLFIDDL示例

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 |
于 2013-05-22T13:17:18.433 回答
0

我在该字段上有 latin1_swedish_ci COLLATION,这会导致错误。将排序规则更改为 utf8_general_ci (“名称”字段)后,它开始正常工作:-)

于 2013-06-17T12:55:46.573 回答