我有两列具有相似数据的列(如下所示)
表1
CHMedicalCorpINC
UniversalStd
SummitCorp
表2
CHMedicalCorp
UniversalStdOrlando
SummitCorpINC
我想逐字逐句地比较两列;如果我使用子字符串,则显示匹配13个字母或完全匹配的值。
所以输出只给我CHMedicalCorp
而不是其他两列。我希望显示其他两列
SUBSTRING(a.table1, 1, 13) = SUBSTRING(c.table2, 1, 13)
我想让它向我展示任何与13或更少相匹配的东西。有没有办法做到这一点或一个允许我这样做的功能?
答案 0 :(得分:1)
如果表格中有任何ID,则下面的查询将有效。
SELECT T1.*
FROM TableName T1
JOIN TableName T2 ON T2.Id = T1.Id
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%';
如果表格中没有Id,您可以这样使用:
SELECT T1.*
FROM TableName T1, TableName T2
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%'
使用给定数据执行示例:
DECLARE @TestTable TABLE (Id INT, Table1 VARCHAR (100), Table2 VARCHAR (100));
INSERT INTO @TestTable (Id, Table1, Table2) VALUES
(1, 'CHMedicalCorpINC', 'CHMedicalCorp'),
(2, 'UniversalStd', 'UniversalStdOrlando'),
(3, 'SummitCorp', 'SummitCorpINC'),
(4, 'Hello', 'Welcome');
SELECT T1.*
FROM @TestTable T1
JOIN @TestTable T2 ON T2.Id = T1.Id
WHERE T1.Table1 like '%' + T2.Table2 + '%'
OR T2.Table2 like '%' + T1.Table1 + '%'