SQL中的模糊查找以匹配名称

问题描述 投票:1回答:1

我陷入了一个需要使用模糊匹配填充历史数据的问题。我正在使用SQL Server 2014 Developer Edition

MainTbl.UNDERWRITER_CODE是需要填充数据以代替NULL的位置。该数据必须来自LKP表。匹配标准为MainTbl.UNDERWRITER_NAMELKP.UNDERWRTIER_NAME

样本:

CREATE TABLE MainTbl(UNDERWRITER_CODE int,  UNDERWRITER_NAME varchar(100))
INSERT INTO MainTbl VALUES
(NULL,'dylan.campbell'),
(NULL,'dylanadmin'),
(NULL,'dylanc'),
(002,'Dylan Campbell'),
(002,'dylan.campbell'),
(002,'dylanadmin'),
(NULL,'scott.noffsinger'),
(001,'Scott Noffsinger')


CREATE TABLE LKP(UNDERWRITER_CODE int,  UNDERWRITER_NAME varchar(100))
INSERT INTO LKP VALUES
(002,'Dylan Campbell'),
(001,'Scott Noffsinger')

预期输出:

2 dylan.campbell
2 dylanadmin
2 dylanc
2 Dylan Campbell
2 dylan.campbell
2 dylanadmin
1 scott.noffsinger
1 Scott Noffsinger
sql sql-server tsql fuzzy-logic
1个回答
0
投票
SELECT T2.UNDERWRITER_CODE,T2.UNDERWRITER_NAME
FROM MainTbl T1
INNER JOIN LKP T2
ON T1.UNDERWRITER_NAME LIKE CONCAT('%',LEFT(LOWER(T2.UNDERWRITER_NAME),charindex(' ', LOWER(T2.UNDERWRITER_NAME)) - 1),'%')
© www.soinside.com 2019 - 2024. All rights reserved.