首頁 >資料庫 >mysql教程 >如何在不使用 STRING_SPLIT 的情況下在 SQL Server 2012 中拆分逗號分隔值?

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

DDD
DDD原創
2025-01-11 06:30:42242瀏覽

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