Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menggabungkan rentetan dengan cekap dalam kumpulan dalam SQL Server?

Bagaimana untuk menggabungkan rentetan dengan cekap dalam kumpulan dalam SQL Server?

Susan Sarandon
Susan Sarandonasal
2025-01-09 12:47:48240semak imbas

How to Efficiently Concatenate Strings Within Groups in SQL Server?

Mengumpul dan Menggabungkan Rentetan dalam Pelayan SQL

SQL Server menawarkan beberapa cara untuk menggabungkan rentetan dalam kumpulan. Kaedah yang sangat cekap melibatkan penciptaan fungsi agregat yang ditentukan pengguna (UDAF). Pendekatan ini memudahkan proses dan meningkatkan prestasi berbanding teknik lain.

Membina UDAF:

Berikut ialah cara mencipta UDAF untuk penyambungan rentetan:

<code class="language-sql">CREATE FUNCTION [dbo].[GroupConcat] (@ValueList VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @Result VARCHAR(MAX) = '';
    WHILE LEN(@ValueList) > 0
    BEGIN
        SELECT TOP 1 @Value = Value, @ValueList = SUBSTRING(@ValueList, LEN(@Value) + 1, LEN(@ValueList))
        FROM STRING_SPLIT(@ValueList, ',')  -- Assumes comma-separated input
        WHERE @Value <> '';
        SET @Result = @Result + @Value;
    END
    RETURN @Result;
END;</code>

Memakai UDAF:

Fungsi GroupConcat boleh digunakan terus dalam pertanyaan SQL anda:

<code class="language-sql">SELECT Id, [dbo].[GroupConcat](Value) AS ConcatenatedValue
FROM YourTable
GROUP BY Id;</code>

Ini mengandaikan data anda berstruktur dengan lajur Id yang mewakili kumpulan dan lajur Value yang mengandungi rentetan untuk digabungkan. Fungsi STRING_SPLIT (tersedia dalam SQL Server 2016 dan lebih baru) digunakan untuk mengendalikan senarai nilai yang dipisahkan koma dengan cekap. Jika data anda tidak dipisahkan koma, laraskan STRING_SPLIT dengan sewajarnya, atau gunakan pendekatan lain untuk membelah rentetan.

Contoh Ilustrasi:

Memandangkan data sampel, pertanyaan akan menghasilkan:

<code>+----+-----------------+
| Id | ConcatenatedValue |
+----+-----------------+
| 1  | AB               |
| 2  | C                |
+----+-----------------+</code>

UDAF ini menyediakan penyelesaian yang diperkemas dan berkesan untuk menggabungkan rentetan dalam kumpulan dalam SQL Server, meningkatkan kecekapan manipulasi data dengan ketara. Ingat untuk menggantikan YourTable dengan nama sebenar jadual anda.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan rentetan dengan cekap dalam kumpulan dalam SQL Server?. 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