2012-11-23 76 views
1

我有字符串,我必須從中抽取子字符串並查詢其值。以逗號分隔子字符串SQL Server

declare @str varchar(max) 
@str='Hello,world,continent,nation,city' 

select * from mytable 
where col_word in(SELECT REPLACE(@str,',',''',''')) 

子查詢

SELECT REPLACE(@str,',',''',''') 

結果

Hello,'world','continent','nation','city 

我想以上的結果用單引號括起來,以便它可以爲IN

但這種回報工作僅適用於第一個子字符串i的第一個col_word值Hello n @str

我該怎麼辦?

+0

不能使用'IN'這樣 –

+0

我想以上的結果用單引號括起來,以便它可以爲 –

+1

工作'IN'不以逗號分隔的字符串 –

回答

3

試試這個:

你不能讓你的查詢作爲字符串的一部分。我們必須將整個查詢作爲一個字符串,然後使用EXEC()命令或sp_executesql存儲過程執行。後者是推薦的。

declare @str varchar(max); 
select @str='Hello,world,continent,nation,city'; 

SELECT @str=''''+REPLACE(@str,',',''',''')+'''' 
exec('select * from mytable where col_word in('[email protected] +')') 
1

試試這個:

declare @str varchar(max) 
declare @pattern varchar(max) 
SET @str='Hello,world,continent,nation,city' 
SELECT REPLACE(@str,',',''',''') 
SET @pattern = REPLACE('Hello,world,continent,nation,city', ',', ''',''') 
EXEC('select * from mytable where col_word in(''' + @pattern + ''')') 
相關問題