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中文网其他相关文章!