Rumah >pangkalan data >tutorial mysql >Bagaimanakah fungsi STUFF SQL Server dan klausa FOR XML PATH digunakan bersama untuk menggabungkan rentetan dalam kumpulan?

Bagaimanakah fungsi STUFF SQL Server dan klausa FOR XML PATH digunakan bersama untuk menggabungkan rentetan dalam kumpulan?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 22:59:11995semak imbas

How can SQL Server's STUFF function and FOR XML PATH clause be used together to concatenate strings within a group?

SQL Server: Menggabungkan STUFF dan FOR XML PATH untuk Penggabungan Rentetan Berkumpulan

Panduan ini menerangkan cara menggunakan fungsi STUFF SQL Server dan klausa FOR XML PATH bersama-sama untuk menggabungkan rentetan dengan cekap dalam kumpulan.

Memahami Komponen:

  1. FOR XML PATH(''): Klausa ini menukar hasil pertanyaan kepada format XML. Menggunakan rentetan kosong ('') sebagai argumen PATH menjana senarai nilai yang dipisahkan koma daripada lajur yang ditentukan, disertakan dalam teg XML. Contohnya:

    <code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>

    Ini akan menghasilkan: ,aaa,bbb,ccc,ddd,eee

  2. STUFF Fungsi: Fungsi STUFF mengubah suai rentetan dengan menggantikan sebahagian daripadanya. Kami menggunakannya di sini untuk mengalih keluar koma utama yang dihasilkan oleh FOR XML PATH(''). Parameter fungsi ialah:

    • Rentetan asal.
    • Kedudukan permulaan untuk penggantian.
    • Bilangan aksara untuk dialih keluar.
    • Rentetan gantian.

    Oleh itu, STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '') mengalih keluar koma awal, menghasilkan: aaa,bbb,ccc,ddd,eee

  3. Menyertai dan Menghimpun: Pertanyaan terakhir menggabungkan rentetan bercantum kembali ke jadual asal menggunakan lajur ID, mengumpulkan hasil untuk mencapai output yang diingini:

    <code class="language-sql">SELECT ID, abc = STUFF(
                 (SELECT ',' + name
                  FROM temp1 t1
                  WHERE t1.id = t2.id
                  FOR XML PATH('')), 1, 1, '')
    FROM temp1 t2
    GROUP BY id;</code>

Ini menjana set hasil seperti ini:

Id abc
1 aaa,bbb,ccc,ddd,eee

Kaedah ini menyediakan cara ringkas dan berkesan untuk menggabungkan rentetan dalam kumpulan dalam SQL Server, mengelakkan keperluan untuk teknik yang lebih kompleks.

Atas ialah kandungan terperinci Bagaimanakah fungsi STUFF SQL Server dan klausa FOR XML PATH digunakan bersama untuk menggabungkan rentetan dalam kumpulan?. 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