Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memisahkan Rentetan Dipisahkan Koma dalam SQL Server 2012 Tanpa Menggunakan STRING_SPLIT?

Bagaimanakah Saya Boleh Memisahkan Rentetan Dipisahkan Koma dalam SQL Server 2012 Tanpa Menggunakan STRING_SPLIT?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-11 07:50:421012semak imbas

How Can I Split Comma-Separated Strings in SQL Server 2012 Without Using STRING_SPLIT?

SQL Server 2012 Pemisahan Rentetan Dipisahkan Koma: Penyelesaian Berasaskan XML

Tahap keserasian SQL Server 2012 boleh menyekat akses kepada fungsi STRING_SPLIT. Artikel ini membentangkan penyelesaian yang berkesan menggunakan teknik XML untuk memisahkan nilai yang dipisahkan koma.

Memanfaatkan XML dan CROSS GUNA

Kaedah ini menukar rentetan yang dipisahkan koma kepada struktur XML. CROSS APPLY kemudian mengekstrak setiap nilai sebagai nod daripada XML ini. Inilah kod SQL:

<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>

Contoh Ilustrasi

Mari kita gunakan parameter sampel ini:

<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';
DECLARE @Marks NVARCHAR(300)= '0,1,2,5,8,9,4,6,7,3,5,2,7,1,9,4,0,2,5,0';</code>

Pertanyaan berikut menunjukkan pembahagian rentetan ini dan memasukkan keputusan ke dalam jadual:

<code class="language-sql">INSERT INTO @StudentsMark
SELECT C.id, C1.marks
FROM CTE C
LEFT JOIN CTE1 C1 ON C1.RN = C.RN;</code>

Hasil

Hasilnya ialah jadual dengan lajur 'id' dan 'marks', setiap satu diisi dengan nilai pisah daripada @ID dan @Marks.

Pendekatan berasaskan XML ini menawarkan kaedah yang boleh dipercayai untuk mengendalikan data dipisahkan koma dalam SQL Server 2012, memintas had tahap keserasian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memisahkan Rentetan Dipisahkan Koma dalam SQL Server 2012 Tanpa Menggunakan STRING_SPLIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn