首页 >数据库 >mysql教程 >如何在不使用 STRING_SPLIT 的情况下在 SQL Server 2012 中拆分逗号分隔值?

如何在不使用 STRING_SPLIT 的情况下在 SQL Server 2012 中拆分逗号分隔值?

DDD
DDD原创
2025-01-11 06:30:42165浏览

How to Split Comma-Separated Values in SQL Server 2012 without STRING_SPLIT?

SQL Server 2012 中 STRING_SPLIT 的替代方案

由于兼容性级别限制,SQL Server 2012 中无法使用 STRING_SPLIT 函数。虽然更改兼容性级别不可行,但有一种替代方法可以分割以逗号分隔的值。

使用 XML 方法和 CROSS APPLY

可以使用 XML 方法和 CROSS APPLY 来实现所需的结果。以下是其工作原理:

<code class="language-sql">SELECT Split.a.value('.', 'NVARCHAR(MAX)') AS DATA
FROM
(
    SELECT CAST('<X>'+REPLACE(@ID, ',', '</X><X>')+'</X>' AS XML) AS String
) AS A
CROSS APPLY String.nodes('/X') AS Split(a);</code>

示例

考虑以下示例,其中 @ID 参数中包含以逗号分隔的值:

<code class="language-sql">DECLARE @ID NVARCHAR(300) = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20';</code>

上述查询的输出将是:

<code>DATA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20</code>

总结

虽然 SQL Server 2012 中不提供 STRING_SPLIT,但结合 CROSS APPLY 的 XML 方法为分割以逗号分隔的值提供了一种可行的替代方案。当兼容性级别限制阻止数据库修改时,这种方法特别有用。

以上是如何在不使用 STRING_SPLIT 的情况下在 SQL Server 2012 中拆分逗号分隔值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn