Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membahagikan Lajur Pangkalan Data Tunggal kepada Berbilang Lajur Menggunakan SQL?

Bagaimanakah Saya Boleh Membahagikan Lajur Pangkalan Data Tunggal kepada Berbilang Lajur Menggunakan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-13 09:19:43151semak imbas

How Can I Split a Single Database Column into Multiple Columns Using SQL?

Teknik SQL untuk Memisahkan Lajur Pangkalan Data

Lazimnya, pertanyaan pangkalan data memerlukan memisahkan data dalam satu lajur kepada berbilang lajur yang berbeza. Ini selalunya penting untuk mengekstrak maklumat khusus atau menyediakan data untuk analisis lanjutan.

Senario:

Bayangkan jadual dengan lajur "Nama Penuh" yang mengandungi nama lengkap individu. Objektifnya adalah untuk membahagikan nama penuh ini kepada lajur "Nama Pertama" dan "Nama Akhir" yang berasingan, dengan mengenepikan nama tengah.

Penyelesaian:

Pertanyaan SQL berikut menggunakan penyataan CASE dan fungsi rentetan untuk menyelesaikan tugas ini:

<code class="language-sql">SELECT 
    CASE 
        WHEN FullName LIKE '% %' THEN LEFT(FullName, CHARINDEX(' ', FullName) - 1) 
        ELSE FullName 
    END AS FirstName,
    CASE 
        WHEN FullName LIKE '% %' THEN RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName)) - 1) 
    END AS LastName
FROM YourTable;</code>

Penjelasan:

Pertanyaan ini menggunakan logik berikut:

  • Penyata CASE pertama menyemak sama ada lajur "Nama Penuh" termasuk ruang, menunjukkan kehadiran sekurang-kurangnya nama pertama dan nama keluarga. Jika ruang wujud, fungsi LEFT mengekstrak bahagian rentetan sebelum ruang pertama. Jika tidak, keseluruhan rentetan ditetapkan sebagai "FirstName".

  • Pernyataan KES kedua juga menyemak ruang. Jika ditemui, fungsi RIGHT mengekstrak bahagian rentetan selepas ruang terakhir (menggunakan REVERSE untuk mencari ruang terakhir dengan mudah).

  • Hasilnya ialah set data dengan lajur "FirstName" dan "LastName".

Pertimbangan Penting:

Kaedah ini menggunakan konvensyen penamaan standard—nama pertama diikuti nama keluarga, dipisahkan oleh satu ruang. Nama dengan berbilang ruang (cth., nama tengah atau gelaran) atau format luar biasa mungkin memerlukan pengubahsuaian atau pendekatan alternatif untuk hasil yang tepat. Penyelesaian yang lebih mantap mungkin melibatkan ungkapan biasa atau fungsi tersuai bergantung pada kerumitan variasi nama.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Lajur Pangkalan Data Tunggal kepada Berbilang Lajur Menggunakan 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