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

Bagaimana untuk Memisahkan Rentetan dalam T-SQL dengan Pembatas yang Hilang?

Barbara Streisand
Barbara Streisandasal
2025-01-08 09:31:41661semak imbas

How to Split Strings in T-SQL with Missing Delimiters?

Pecah rentetan berasaskan pembatas dalam T-SQL, mengendalikan pembatas yang hilang

Dalam T-SQL, anda mungkin perlu membelah rentetan berdasarkan pembatas tertentu, walaupun pembatas itu tidak sentiasa ada. Tugasan ini biasanya dilakukan menggunakan fungsi SUBSTRING. Walau bagaimanapun, kod yang disediakan dalam soalan gagal apabila baris tiada pembatas yang dijangkakan.

Untuk menyelesaikan isu ini, pertimbangkan kod diubah suai berikut:

<code class="language-sql">SELECT 
    CASE 
        WHEN CHARINDEX('/', myColumn) = 0 THEN myColumn
        ELSE SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn) - 1)
    END AS FirstName,
    CASE 
        WHEN CHARINDEX('/', myColumn) = 0 THEN NULL
        ELSE SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, LEN(myColumn))
    END AS LastName
FROM MyTable;</code>

Dalam kod ini, pernyataan CASE digunakan untuk menentukan tempat subrentetan untuk lajur FirstName dan LastName bermula dan berakhir. Kedudukan permulaan lajur Nama Pertama ditetapkan pada permulaan rentetan (jika tiada pembatas ditemui) atau aksara sebelum pembatas. Begitu juga, kedudukan akhir lajur Nama Pertama ditetapkan pada penghujung rentetan atau aksara sebelum pembatas.

Kaedah ini memastikan bahawa kod boleh mengendalikan garisan dengan pembatas yang dijangkakan serta baris tanpa pembatas yang dijangkakan tanpa menghasilkan ralat. Output yang terhasil akan memberikan nilai FirstName dan LastName yang diperlukan, walaupun untuk baris tanpa pembatas, di mana nilai yang hilang akan muncul sebagai NULL. Ini lebih ringkas dan cekap daripada kod asal, dan mengendalikan pembatas yang hilang dengan lebih jelas.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dalam T-SQL dengan Pembatas yang Hilang?. 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