时间:2017-07-26 15:33:22

标签: sql-server-2008 substring

我有两列具有相似数据的列(如下所示)

表1

CHMedicalCorpINC  
UniversalStd  
SummitCorp  

表2

CHMedicalCorp  
UniversalStdOrlando  
SummitCorpINC 

我想逐字逐句地比较两列;如果我使用子字符串,则显示匹配13个字母或完全匹配的值。

所以输出只给我CHMedicalCorp而不是其他两列。我希望显示其他两列

SUBSTRING(a.table1, 1, 13) = SUBSTRING(c.table2, 1, 13)  

我想让它向我展示任何与13或更少相匹配的东西。有没有办法做到这一点或一个允许我这样做的功能?

1 个答案:

答案 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 + '%'