Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Rentetan dengan Cekap dengan Pembatas Pilihan dalam T-SQL?
Mengendalikan pemisahan rentetan dengan atau tanpa pembatas dalam T-SQL
Pertanyaan SQL selalunya memerlukan memanipulasi rentetan dan mengekstrak bahagian tertentu berdasarkan pembatas. Walau bagaimanapun, pengendalian situasi di mana pembatas mungkin hilang atau pilihan memerlukan perancangan yang teliti.
Dalam senario yang diberikan, tugasnya adalah untuk memisahkan lajur rentetan yang mengandungi nama (nama pertama dan nama keluarga) yang dipisahkan dengan aksara '/'. Kod pada mulanya menganggap bahawa semua baris mengandungi pembatas, tetapi ralat berlaku untuk baris yang tidak.
Untuk menangani masalah ini dengan cekap, kami boleh melaksanakan pengubahsuaian 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>
Kod yang diubah suai ini menggunakan pernyataan CASE untuk menyemak sama ada aksara '/' wujud (jika ia tidak wujud, CHARINDEX('/') mengembalikan 0). Jika ditemui, rentetan dipecahkan seperti yang dijangkakan, sebaliknya, ia menganggap keseluruhan rentetan sebagai nama pertama dan menetapkan nama akhir kepada NULL.
Dengan menambahkan logik ini, pertanyaan menjadi mantap dan boleh mengendalikan baris dengan dan tanpa pembatas, memberikan output yang diingini:
FirstName | LastName |
---|---|
John | Smith |
Jane | Doe |
Steve | NULL |
Bob | Johnson |
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dengan Cekap dengan Pembatas Pilihan dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!