我有一个表,其中有一列“文本”类型。我知道我可以使用简单的 select 语句比较两个条目,看看它们是否相同。有没有办法比较两个条目并返回它们的相似程度?更具体地说,它可以说两者之间有多少个字符不同?
例如,假设一个条目是:
This is a line.
另一个是:
This is a line. And another.
我相信我可以写一个选择语句,说明第一个包含在第二个中。但是有没有办法提醒我第一个在第二个并且第二个有 15 个额外的字符?
我有一个表,其中有一列“文本”类型。我知道我可以使用简单的 select 语句比较两个条目,看看它们是否相同。有没有办法比较两个条目并返回它们的相似程度?更具体地说,它可以说两者之间有多少个字符不同?
例如,假设一个条目是:
This is a line.
另一个是:
This is a line. And another.
我相信我可以写一个选择语句,说明第一个包含在第二个中。但是有没有办法提醒我第一个在第二个并且第二个有 15 个额外的字符?
尝试使用 Levinshtein 距离http://www.artfulsoftware.com/infotree/queries.php#552
您可以使用 LENGTH 和 LIKE 来执行此操作。例如:
INSERT INTO test VALUES("HELLO WORLD");
select LENGTH(name)-length("HELLO") from test where name like "%HELLO%";
因此,您需要以编程方式将 HELLO 替换为您想要搜索的任何字符串。
那是你要找的吗?
您可以简单地测量两者作为字符串的长度char_length()
并减去差异吗?
MySQL:字符长度()
(注意length()
并char_length()
返回不同的值!)