2016-04-13 47 views
0

僅獲取那些行,其中column1中的值包含或者等於同一個表和同一行的column2中的值。從列表中選擇* where column1 LIKE column2

E.g,如果表看起來是這樣的:

enter image description here

但我只希望獲取,其中列1的值列2的部分相匹配的行,像這樣:

enter image description here 即col1像col2或col2包含col1,返回。

出於同樣的我已經產生與像圖案的柱,並使用在條件相同的模式如下:

SELECT '''%''' + cast(t.col1 AS varchar(200))+ '''%''' as MatchThis, 
FROM [practice].[tables].[Temp1] t 
WHERE t.col2 LIKE '''%''' + cast(t.col1 AS varchar(200))+ '''%''' 

這是沒有幫助,也許是因爲LIKE總是需要一個硬編碼引號值和將其與查詢的所有結果行進行比較。我也嘗試過CONTAINS,但那也行不通。

現在卡住了,有沒有其他出路。

+1

'Peps ** i **'不是'Peps ** o ** dent'的一部分。如果你考慮大寫/小寫,'** L ** ife'不是'Met ** l ** ife'的一部分。 –

回答

1

這是做你想做的嗎?

select t.* 
from [practice].[tables].[Temp1] t 
where t.col2 like '%' + col1 + '%'; 

您的查詢似乎相對於該問題過於複雜。問題是關於比較兩列,所以應該在WHERE條款中提出某種條件。

相關問題