需要帮助将Oracle Query转换为SQL Server

时间:2016-07-04 19:02:38

标签: sql-server

几个星期前,我发了一篇帖子来帮助将逗号分隔的值列表转换为可以用作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上访问它。

您可能会得到任何建议,我们将不胜感激。我一直试图在这一天的大部分时间里试一试。

1 个答案:

答案 0 :(得分:1)

从版本2016开始,MS SQL Server中提供了

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)