Ekstrak nama pertama, nama tengah dan nama keluarga daripada medan rentetan dalam MySQL
Memisahkan rentetan nama kepada nama pertama, tengah dan akhir ialah tugas biasa dalam pemprosesan data. MySQL menyediakan pelbagai fungsi untuk tujuan ini.
Kaedah 1: Asingkan nama pertama, nama tengah dan nama keluarga
Kaedah ini menggunakan fungsi SUBSTRING_INDEX dan LENGTH untuk mengekstrak setiap bahagian nama:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name, IF(LENGTH(fullname) - LENGTH(REPLACE(fullname, ' ', '')) > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1), NULL) AS middle_name, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1) AS last_name FROM registeredusers;</code>
Penerangan:
SUBSTRING_INDEX(fullname, ' ', 1)
Mengeluarkan bahagian rentetan sehingga ruang pertama. SUBSTRING_INDEX(..., ' ', -1)
Dapatkan semula elemen terakhir daripada rentetan ini, dengan memberikan nama. IF
Menyemak sama ada rentetan mengandungi berbilang ruang (menunjukkan kehadiran nama tengah). SUBSTRING_INDEX(..., ' ', 2)
Kemudian asingkan bahagian yang mengandungi nama tengah dan nama keluarga. SUBSTRING_INDEX(..., ' ', -1)
Mengekstrak bahagian terakhir rentetan, memberikan nama akhir. Kaedah 2: Asingkan nama pertama dan nama keluarga
Jika nama tengah dianggap sebahagian daripada nama keluarga, anda boleh menggunakan kaedah ini:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name, TRIM(SUBSTR(fullname, LOCATE(' ', fullname))) AS last_name FROM registeredusers;</code>
Penerangan:
SUBSTRING_INDEX(fullname, ' ', 1)
Mengeluarkan bahagian rentetan sehingga ruang pertama, memberikan nama. LOCATE(' ', fullname)
Cari kedudukan ruang pertama. SUBSTR(fullname, ...)
, bermula dari LOCATE, mendapatkan semula rentetan yang lain, termasuk nama tengah dan akhir. TRIM
Alih keluar sebarang ruang hadapan atau belakang. Atas ialah kandungan terperinci Bagaimana untuk mengekstrak Nama Pertama, Tengah, dan Akhir daripada String dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!