2013-03-26 37 views
1

如果有一個包含使用分隔符的並列數據列的表,即11111_22222_33333(我知道這是不正確的做法,但這是我必須使用的數據)從一個子查詢中選擇行包含任何結果的行

我需要編寫一個查詢,該查詢返回包含特定值22222的所有行,其中特定值是子查詢的結果。

所以,我在做什麼是如下...

SELECT * FROM myTable WHERE myColumn IN (SELECT [Name] FROM subTable) 

此運行,但犯規回報,因爲它是專門匹配1111_2222_3333到2222所以我需要的是使用LIKE或東西的方式任何結果類似

SELECT * FROM myTable WHERE myColumn LIKE (SELECT [NAME] FROM subTable) 

給出了錯誤

Msg 512, Level 16, State 1, Line 1 
Subquery returned more than 1 value. This is not permitted when the subquery follows 
=, !=, <, <=  , >, >= or when the subquery is used as an expression. 

這將如何實現p租?我正在使用Sql Server 2008 R2進行開發,但解決方案也需要與Server 2005兼容。

+3

我覺得你的用戶名非常可疑。 – 2013-03-26 13:10:16

+0

感謝所有的快速回應 – SkeetJon 2013-03-26 13:25:29

回答

1
SELECT 
    t1.* 
FROM myTable t1 
join (
    SELECT distinct [Name] FROM subTable 
) x 
on t1.myColumn like '%' + x.[name] + '%' 
1

您的子查詢返回多個值,而LIKE不能用於子查詢,您需要使用的是EXISTS。這

SELECT * FROM myTable a 
WHERE EXISTS (SELECT 1 FROM subTable b 
       WHERE a.myColumn LIKE '%' + b.[NAME] + '%') 
0

您可以使用JOINLIKE子句,以獲得結果:

select * 
from mytable t 
inner join subtable s 
    on t.mycolumn like '%'+s.name+'%' 

SQL Fiddle with Demo

+0

這不起作用,除非你扭轉連接條件變成\t \t t.myColumn like'%'+ s.Name +'%'? – SkeetJon 2013-03-26 13:21:33

+0

@SkeetJon你說得對,我把表格和數據顛倒了。 – Taryn 2013-03-26 13:55:43

相關問題