是否有可能在MySQL中使用ORDER BY类似的字符串?

时间:2012-04-18 19:01:20

标签: mysql

我有一个包含来自世界各地用户的文本输入的列,我想将它们分组,以便彼此相似的字符串更加接近。该列包含非英语语言的字符串,此外还包含拼写错误的单词。

我一直在研究N-gram和Levenshtein距离,但这似乎要求我有一个字符串来匹配行。

举个例子,我想

   |Comcast               | 
   |how to play basketball|
   |Walmart               |
   |www.Comcast.net       |
   |Wamlart               |
   |basketball            |

最终看起来像:

   |Comcast               | 
   |www.Comcast.net       |
   |how to play basketball|
   |basketball            |
   |Walmart               |
   |Wamlart               |

任何帮助将不胜感激。 谢谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试按SOUNDEX代码订购。

,例如,

ORDER BY SOUNDEX(MyColumn)

然而,这将分解更长的字符串。使用Double Metaphone算法可能会有更好的运气:

http://www.atomodo.com/code/double-metaphone/metaphone.sql/view

答案 1 :(得分:0)

使用ORDER BY代替GROUP BY

SELECT * FROM table ORDER BY column ASC
SELECT * FROM table ORDER BY column DESC

该列将按字母顺序升序或降序排序

答案 2 :(得分:0)

如果在显示数据之前所有字符串都有像'.net'那样删除的东西,你可以这样做:

SELECT column,ordercolumn FROM 
(
    SELECT column,REPLACE(column,'www.comcast.net','ComCast') ordercolumn
    FROM mytable
) A
ORDER BY ordercolumn,column;