与表

2017-07-26 31 views
1

我有两列与类似的数据(如下所示)与表

表1

CHMedicalCorpINC 
UniversalStd 
SummitCorp 

表2

CHMedicalCorp 
UniversalStdOrlando 
SummitCorpINC 

我想比较两个字符串比较列逐个字母;如果我使用子字符串,那么它会显示匹配13个字母的值或完美匹配的值。

所以输出给我只有CHMedicalCorp不是其他两列。我想要显示另外两列

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

我希望它能显示任何匹配到13或更少的东西。有没有办法做到这一点或允许我这样做的功能?

回答

1

如果表中有任何标识,下面的查询将可用。

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 + '%' 
+0

是否有另一种方式做到这一点?因为这要花太长时间才能执行。 – nfs