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!