所以我有一张有人名的桌子。 我需要编写一个查询来选择名称与给定名称最相似的人。
例如:
SELECT * FROM people WHERE name='joen'
'joen'在表中不存在,因此它将返回表中存在的John。
MySQL的命令是什么?
答案 0 :(得分:2)
您可能正在寻找SOUNDEX
和SOUNDS_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%'