在mysql中选择相似的值(有些东西,söméthińg,有些东西,有些东西应该是一样的)

时间:2011-12-04 09:07:17

标签: mysql sql

我正在建立一个标记系统,我需要检索类似的标签,所以当用户选择“某些东西”或“sométhing”或“sömething”或“sometothing”等时,他会得到所有表中的匹配行。

如果我在场上使用utf8_generalutf8_unicode,那将是一块蛋糕。我可以

SELECT * FROM tags WHERE tag LIKE 'some thing'

但是,我需要在该表中使用utf8_bin。那么,我该怎么办?我不是一个非常大的mysql专家。我想我应该使用CAST()或CONVERT(),但我不确定如何。

第二部分,获取某些东西,某些东西,某些东西等等,是另一个问题,但我想我可以用正则表达式单独解决它

编辑:解决方案 我认为搞乱所有这些转换和正则表达可能不是最好的方法。相反,我将使用我的框架的方法并生成给定标记的URL“名称”并将其存储在同一个数据库行中。

1 个答案:

答案 0 :(得分:2)

是的,转换: -

mysql> select convert( "söme thing" using utf8) = 
convert( "some thing" using utf8);
+------------------------------------------------------------------------+
| convert( "söme thing" using utf8) = convert( "some thing" using utf8)  |
+------------------------------------------------------------------------+
|                                                                      1 |
+------------------------------------------------------------------------+

但我认为使用utf8_bin

没有任何好处

处理标签搜索时,您可以考虑存储

  • 干净版(部分)
  • 将söme和其他变体映射到干净版本的附加表格
  • 当用户搜索söme时,您可以查找söme= some