我为了加入一个表与自身找人在我的表在同一家族中不同的姓氏。 唯一的问题是存在这样的情况,其中一个姓可能是琼斯,和另一条记录的列可能是琼斯小
这在技术上是相同的姓氏,使他们不符合我的要求。 我需要从我的结果消除琼斯小。
在复杂的因素是它也可能是像史密斯 - 琼斯,所以我需要将它删除这条记录。 因为我不知道区别在哪里将是我希望能够增加一个条件,我的查询说,不超过4个(或某个任意数)每个名称的字符可以匹配。
这里是我的查询:
SELECT [fields]
FROM [table] a
INNER JOIN [table] b ON a.[family_id] = b.[family_id]
WHERE a.[last_name] <> b.[last_name]
有任何想法吗?
你可以使用差异。 返回的值是在是相同的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
使用通配符进行比较。 下面的工作,可能你想要的东西:
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 + '%';
当然,“约翰”和“强生”和“马丁”和“马丁内斯”也将不匹配。 我不知道这是一个问题。