我正在尝试使用三个字段匹配客户端:FirstName,LastName,Gender和DOB。我的理解是SSIS模糊查找仅适用于字符串(在文档中从未见过,只有一些博主说过)所以在这种情况下,我能以某种方式使用DOB构建"信心"?该工具如何比较日期?
答案 0 :(得分:2)
我做了很多名字/ DOB搜索,而且很难做对。您可以考虑使用类似于下面的功能进行排序。这将基本上采用两个8位数日期(YYYYMMDD)并计算未匹配数字的数量。
例如,这些日期对有1个未匹配的数字:
根据处理的数据量,这有利于排序(也就是说你最好的匹配)但不适合过滤(因为没有涉及索引)。
ALTER FUNCTION dbo.BirthDateRank ( @DOB1 DATE, @DOB2 DATE )
RETURNS INT
AS
BEGIN
-- 10/31/2016 --> 10312016
DECLARE @xDOB1 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB1, 101), '/', '');
DECLARE @xDOB2 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB2, 101), '/', '');
DECLARE @i INT = 0;
DECLARE @iRet INT = 0;
WHILE @i <= LEN(@xDOB1)
BEGIN
SET @iRet = @iRet + CASE WHEN SUBSTRING(@xDOB1, @i, 1) = SUBSTRING(@xDOB2, @i, 1) THEN 0 ELSE 1 END
SET @i = @i + 1
END
RETURN @iRet;
END;
GO