Soalan:
Anda ingin menukar satu lajur yang mengandungi senarai nama kepada berbilang lajur nama pertama dan nama keluarga.
Contoh:
<code class="language-sql">姓名 ------------ abcd efgh ijk lmn opq asd j. asdjja asb (asdfas) asd asd</code>
Keluaran yang dijangkakan:
<code class="language-sql">名 姓 ---------------------------------- abcd efgh ijk lm opq asd asdjja asb asd asd NULL</code>
Penyelesaian:
Kaedah sebelumnya mungkin tidak mengendalikan semua format nama dengan betul. Berikut ialah penyelesaian yang dipertingkat menggunakan T-SQL:
<code class="language-sql">SELECT CASE WHEN name LIKE '% %' THEN SUBSTRING(name, 1, CHARINDEX(' ', name) - 1) ELSE name END AS first_name, CASE WHEN name LIKE '% %' THEN SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name)) ELSE NULL END AS last_name FROM YourTable;</code>
Kod SQL ini mula-mula menyemak kehadiran ruang dalam nama. Jika ada, ia menggunakan fungsi SUBSTRING
untuk mengekstrak bahagian sebelum ruang sebagai nama pertama dan bahagian selepas ruang sebagai nama akhir. Jika tiada ruang dalam nama, keseluruhan nama digunakan sebagai nama pertama dan nama akhir ialah NULL. Ini lebih mantap daripada penyelesaian sebelumnya dan mengendalikan pelbagai format nama dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Satu Lajur Nama kepada Lajur Nama Pertama dan Akhir dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!