Tengo una cadena desde la cual tengo que extraer la subcadena y consultar sus valores.
declare @str varchar(max) @str='Hello,world,continent,nation,city' select * from mytable where col_word in(SELECT REPLACE(@str,',',''','''))
La consulta secundaria
SELECT REPLACE(@str,',',''',''')
resultados en
Hello,'world','continent','nation','city
Quiero que el resultado anterior esté entre comillas simples para que pueda funcionar para IN
Pero esto solo retorna para el primer valor de col_word Hello
que es la primera subcadena en @str
.
Que debería hacer ?
Prueba esto:
No puede hacer que parte de su consulta sea una cadena. Tenemos que hacer toda la consulta como una cadena, luego ejecutarlo con el command EXEC () o el procedimiento almacenado sp_executesql . Este último es recomendado.
declare @str varchar(max); select @str='Hello,world,continent,nation,city'; SELECT @str=''''+REPLACE(@str,',',''',''')+'''' exec('select * from mytable where col_word in('+@str +')')
Prueba esto:
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 + ''')')