Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Rentetan dengan Selamat dalam T-SQL Menggunakan Pembatas?
Soalan:
Dalam SQL, menggunakan SUBSTRING untuk memisahkan rentetan berdasarkan pembatas mungkin menyebabkan ralat apabila pembatas tidak wujud. Kod di bawah menunjukkan ini:
<code class="language-sql">SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName, SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName FROM MyTable</code>
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:
<code class="language-sql">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</code>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!