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
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
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!