MySQL将字符串与国家字符进行比较

时间:2013-05-22 12:36:21

标签: mysql string

我遇到了一个小麻烦:

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

有没有聪明的方法可以做到这一点?

2 个答案:

答案 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(“名称”字段)后,它开始正常工作: - )