T-SQL - 如何匹配子字符串中不同表的两个名称

时间:2017-02-23 15:20:30

标签: sql-server tsql

我有两列写回数据并存储在数据库中

Contact_Name: "Mr John Smith" - Databox 1
Group_Name: "Mr J Smith" - Databox 2

两个名字都在一个字符串中,不能分开。

我需要验证两个数据库中存储的Surname是否匹配。

数据源包含数千个名称,其中一些会有连字符。第一个和第二个名字之间总会有一个空格。

2 个答案:

答案 0 :(得分:0)

您需要做的是从上一个问题中获取答案:T-SQL - Extracting Surname from one column of data然后将surname值与记录的其余部分一起存储。然后,您可以从那里与简单的相等进行比较:

select case when Contact_Name_Surname = Group_Name_Surname
            then 'Match'
            else 'No Match'
            end as DoTheSurnamesMatch
from YourTable

答案 1 :(得分:0)

--  dummy data
;WITH [data] AS (
    SELECT
         [databox1] = N'Mr John Smith'
        ,[databox2] = N'Mr J Smith'
)
--  end dummy data
SELECT 
     [databox1]         =   [databox1]
    ,[databox2]         =   [databox2]
    ,[is_surname_same]  =   CASE WHEN   RIGHT([databox1], CHARINDEX(SPACE(1), REVERSE([databox1]))) 
                                    =   RIGHT([databox2], CHARINDEX(SPACE(1), REVERSE([databox2]))) 
                                    THEN 1 ELSE 0 
                            END
FROM 
    [data];