我正在为自己加入一张桌子,以便在同一家庭中找到不同姓氏的人。唯一的问题是有一个姓氏可能是Jones的情况,而另一个记录的列可能是Jones Jr.
这些在技术上是相同的姓氏,因此它们不符合我的要求。我需要从我的结果中消除Jones Jr.
复杂的因素是它也可能像史密斯 - 琼斯一样,所以我也需要删除这条记录。由于我不知道差异在哪里,我希望能够在我的查询中添加条件,说每个名称不超过4个(或任意数字)字符可以匹配。
这是我的疑问:
SELECT [fields]
FROM [table] a
INNER JOIN [table] b ON a.[family_id] = b.[family_id]
WHERE a.[last_name] <> b.[last_name]
有什么想法吗?
答案 0 :(得分:0)
使用通配符进行比较。以下内容可能适合您的需要:
SELECT [fields]
from [table] a INNER JOIN
[table] b
ON a.[family_id] = b.[family_id]
WHERE a.last_name not like '%' + b.last_name + '%' and
b.last_name not like '%' + a.last_name + '%';
当然,&#34;约翰斯&#34;和&#34;约翰逊&#34;和#34; Martin&#34;和#34; Martinez&#34;也将无法匹配。我不知道这是不是一个问题。
答案 1 :(得分:0)
你可以使用DIFFERENCE。返回的值是SOUNDEX值中相同的字符数。返回值的范围为0到4:0表示弱相似或无相似,4表示强相似或相同值。这对您的要求是一个很好的解决方案:在我的表中找到具有不同姓氏的同一家庭中的人
SELECT [fields] from [table] a
INNER JOIN [table] b
ON a.[family_id] = b.[family_id]
WHERE DIFFERENCE(a.[last_name], b.[last_name]) < 4