Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Rentetan dengan Selamat dalam T-SQL Menggunakan Pembatas?

Bagaimana untuk Memisahkan Rentetan dengan Selamat dalam T-SQL Menggunakan Pembatas?

Linda Hamilton
Lepaskan: 2025-01-08 09:52:41
asal
368 orang telah melayarinya

How to Safely Split Strings in T-SQL Using Delimiters?

Pisah rentetan berdasarkan pembatas dalam T-SQL

Soalan:

Dalam SQL, menggunakan SUBSTRING untuk memisahkan rentetan berdasarkan pembatas mungkin menyebabkan ralat apabila pembatas tidak wujud. Kod di bawah menunjukkan ini:

SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM   MyTable
Salin selepas log masuk

Apabila baris tanpa pembatas ditemui, ia melemparkan ralat: "Argumen panjang yang dihantar ke fungsi LEFT atau SUBSTRING adalah tidak sah."

Penyelesaian:

Untuk menyelesaikan masalah ini, anda boleh menggunakan pernyataan CASE dalam fungsi SUBSTRING seperti berikut:

SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn)
            ELSE CHARINDEX('/', myColumn) - 1
            END) AS FirstName
    ,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn) + 1
            ELSE CHARINDEX('/', myColumn) + 1
            END, 1000) AS LastName
FROM MyTable
Salin selepas log masuk
Kod yang dikemas kini ini menggunakan CHARINDEX untuk menilai kedudukan pembatas. Jika pembatas tidak ditemui (CHARINDEX mengembalikan 0), pernyataan CASE menggunakan panjang rentetan untuk memastikan keseluruhan rentetan dianggap sebagai nama. Jika pembatas hadir, ia mengira kedudukan aksara pertama selepas pembatas sebagai indeks permulaan nama akhir.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dengan Selamat dalam T-SQL Menggunakan Pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan