MySQL:选择最相似的值?

时间:2012-03-15 01:33:27

标签: mysql

所以我有一张有人名的桌子。 我需要编写一个查询来选择名称与给定名称最相似的人。

例如:

SELECT * FROM people WHERE name='joen'

'joen'在表中不存在,因此它将返回表中存在的John。

MySQL的命令是什么?

4 个答案:

答案 0 :(得分:2)

您可能正在寻找SOUNDEXSOUNDS_LIKE

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

答案 1 :(得分:2)

Levenshtein算法计算单词之间的“距离”:Levenshtein MySQL function

如果添加该功能,可以像这样使用它:

SELECT * FROM people WHERE levenshtein('joen', `name`) BETWEEN 0 AND 4;

答案 2 :(得分:0)

我不是这方面的专家,但这不是一件小事。 “类似”你的意思是它可能是一个或两个字母,或者你的意思是“乔恩”应该匹配“乔纳森”和“比尔”应该匹配“威廉”吗?

如果是后者,您可能想要找到或构建一个将名称/昵称映射到彼此的表格,并对其进行搜索。

如果是拼写错误,Levenshtein可能会有所帮助,但我不知道你是如何将它集成到SQL查询中的。

答案 3 :(得分:-1)

LIKE关键字可能会帮助您

SELECT * FROM people WHERE name LIKE 'jo%'

选择名称以“jo”

开头的用户

如果你正在编程改变查询,那么你 可以检查“结果”并再次查询数据库 使用新的Query减少中的字符 指定“名称”。

SELECT * FROM people WHERE name LIKE 'jones%'

SELECT * FROM people WHERE name LIKE 'jone%'

SELECT * FROM people WHERE name LIKE 'jon%'

SELECT * FROM people WHERE name LIKE 'jo%'