【发布时间】:2014-02-06 08:35:43
【问题描述】:
我有一个数据库,有时会存储重复的行,但是重复的行并不明确,例如以下两列值将重复:
G12345 & G1234 --> because they are very similar
(a string comparison shows that the characters match 83.3%).
我需要一些帮助来编写一个SQL 查询,该查询将检索与作为查询的一部分发送的字符串非常相似的值,例如超过 50% 的字符匹配。
有人可以帮忙吗?我有一个 C# 方法如下,但不太确定如何在 SQL 中完成此操作:
static double StringCompare(string a, string b)
{
if (a == b) //Same string, no iteration needed.
return 100;
if ((a.Length == 0) || (b.Length == 0)) //One is empty, second is not
{
return 0;
}
var maxLen = a.Length > b.Length ? a.Length : b.Length;
var minLen = a.Length < b.Length ? a.Length : b.Length;
var sameCharAtIndex = 0;
for (var i = 0; i < minLen; i++) //Compare char by char
{
if (a[i] == b[i])
{
sameCharAtIndex++;
}
}
return sameCharAtIndex / maxLen * 100;
}
提前致谢。
【问题讨论】:
标签: asp.net sql sql-server