用逗号SQL Server分隔子串

时间:2012-11-23 12:30:37

标签: sql 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

但这仅返回第一个col_word值Hello,它是@str中的第一个子字符串。

我该怎么办?

2 个答案:

答案 0 :(得分: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('+@str +')')

答案 1 :(得分: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 + ''')')