几个星期前,我发了一篇帖子来帮助将逗号分隔的值列表转换为可以用作Oracle中IN子句的一部分的格式。这是帖子的链接。
Ethical Hacking Python Keylogger
答案是将列表拆分为每个值的单独行。这是我最终使用的答案。
SELECT trim(regexp_substr(str, '[^,]+', 1, LEVEL)) str
FROM ( SELECT '1,2,3,4' str FROM dual )
CONNECT BY instr(str, ',', 1, LEVEL - 1) > 0
有没有办法可以在SQL Server中做类似的事情,而无需创建自定义函数?我注意到有一个STRING_SPLIT函数,但我似乎无法在此SQL Server上访问它。
您可能会得到任何建议,我们将不胜感激。我一直试图在这一天的大部分时间里试一试。
答案 0 :(得分:1)
String_split
功能。如果您使用旧版本,则可以编写几行代码来执行相同操作。
declare @str varchar(100)='1,2,3,4' --initial string
;with cte as (--build xml from the string
select cast('<s>'+replace(@str,',','</s><s>')+'</s>' as xml) x
)
--receive rows
select t.v.value('.[1]','int') value
from cte cross apply cte.x.nodes('s') t(v)