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中文網其他相關文章!