Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Satu Lajur Nama kepada Lajur Nama Pertama dan Akhir dalam SQL?

Bagaimana untuk Memisahkan Satu Lajur Nama kepada Lajur Nama Pertama dan Akhir dalam SQL?

DDD
DDDasal
2025-01-13 10:23:421055semak imbas

How to Split a Single Column of Names into First and Last Name Columns in SQL?

Pisah satu nilai lajur kepada berbilang nilai lajur

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn