Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Lajur 'Nama' Tunggal kepada Lajur 'Nama Pertama' dan 'Nama Akhir' dalam SQL?
Pisah satu nilai lajur kepada berbilang lajur
Tugasnya ialah untuk membahagikan nilai dalam satu lajur "nama" kepada berbilang lajur, termasuk nama pertama dan nama keluarga. Anda ingin meninggalkan nama tengah dan memaparkan data yang terhasil dalam lajur "nama_pertama" dan "nama_akhir".
Penyelesaian tersuai
Pendekatan yang dicadangkan mungkin tidak sesuai untuk mengendalikan pelbagai format nama. Walau bagaimanapun, pertanyaan SQL tersuai boleh mencapai ini:
<code class="language-sql">SELECT CASE WHEN name LIKE '% %' THEN LEFT(name, Charindex(' ', name) - 1) ELSE name END AS first_name, CASE WHEN name LIKE '% %' THEN RIGHT(name, LEN(name) - Charindex(' ', REVERSE(name))) ELSE NULL END AS last_name FROM YourTable;</code>
Pertanyaan ini menggunakan fungsi Charindex untuk mencari kedudukan aksara ruang pertama dalam lajur Nama. Jika ruang ditemui, nama dibahagikan kepada bahagian nama pertama dan nama akhir. Jika tiada ruang ditemui, seluruh nama diberikan kepada lajur nama pertama dan nilai NULL diberikan kepada lajur nama akhir. Parameter kedua fungsi RIGHT
telah diperbetulkan untuk menggunakan LEN(name)
untuk mengira panjang rentetan, memastikan nama akhir diekstrak dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur 'Nama' Tunggal kepada Lajur 'Nama Pertama' dan 'Nama Akhir' dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!