與表

2017-07-26 47 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