Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membahagikan Rentetan Dibatasi Koma dengan Cekap dalam SQL Server 2008 R2?

Bagaimanakah Saya Boleh Membahagikan Rentetan Dibatasi Koma dengan Cekap dalam SQL Server 2008 R2?

DDD
DDDasal
2025-01-25 06:56:08512semak imbas

How Can I Efficiently Split Comma-Delimited Strings in SQL Server 2008 R2?

Pemisahan Rentetan T-SQL dalam SQL Server 2008 R2

SQL Server 2008 R2 tidak mempunyai fungsi pemisahan rentetan terbina dalam, menjadikan pemprosesan rentetan dipisahkan koma mencabar. Artikel ini menunjukkan penyelesaian yang teguh menggunakan fungsi tersuai.

Mencipta Fungsi Pisahan Tersuai

Fungsi dbo.splitstring berikut dengan cekap memisahkan rentetan dipisahkan koma:

<code class="language-sql">CREATE FUNCTION dbo.splitstring (@stringToSplit VARCHAR(MAX))
RETURNS @returnList TABLE ([Name] [nvarchar](500))
AS
BEGIN
    DECLARE @name NVARCHAR(255), @pos INT;
    WHILE CHARINDEX(',', @stringToSplit) > 0
    BEGIN
        SELECT @pos = CHARINDEX(',', @stringToSplit);
        SELECT @name = SUBSTRING(@stringToSplit, 1, @pos - 1);
        INSERT INTO @returnList SELECT @name;
        SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos + 1, LEN(@stringToSplit) - @pos);
    END
    INSERT INTO @returnList SELECT @stringToSplit;
    RETURN;
END;</code>

Penggunaan Fungsi

Untuk menggunakan fungsi, hanya lulus rentetan untuk dipecahkan sebagai parameter:

<code class="language-sql">SELECT * FROM dbo.splitstring('91,12,65,78,56,789');</code>

Ini akan menghasilkan jadual dengan setiap nilai dipisahkan koma dalam baris yang berasingan:

| Nama | |---|---| | 91 | | 12 | | 65 | | 78 | | 56 | | 789 |

Fungsi tersuai ini menyediakan kaedah yang boleh dipercayai untuk mengendalikan rentetan dipisahkan koma dalam had SQL Server 2008 R2.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Rentetan Dibatasi Koma dengan Cekap dalam SQL Server 2008 R2?. 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