Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dalam SQLite Menggunakan Ungkapan Jadual Biasa (CTE)?

Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dalam SQLite Menggunakan Ungkapan Jadual Biasa (CTE)?

Barbara Streisand
Lepaskan: 2024-12-31 22:01:17
asal
723 orang telah melayarinya

How Can I Split Comma-Separated Values in SQLite Using a Common Table Expression (CTE)?

Memisahkan Nilai Dipisahkan Koma dalam SQLite: Pendekatan Common Table Expression (CTE)

Dalam bidang pengurusan data, keperluan untuk nilai yang dipisahkan koma (CSV) sering timbul. Untuk SQLite, sistem pangkalan data ringan yang popular, tugas ini mungkin tidak semudah dalam persekitaran SQL yang lain kerana ketiadaan fungsi substring() khusus. Walau bagaimanapun, terdapat penyelesaian alternatif yang memanfaatkan Ungkapan Jadual Biasa (CTE).

Mari kita pertimbangkan senario berikut: kami mempunyai jadual dengan lajur "Kategori" yang mengandungi rentetan dipisahkan koma dan kami ingin mengekstrak nilai individu daripada setiap rentetan ke dalam baris yang berasingan.

CTE ialah set hasil sementara yang dinamakan yang boleh dirujuk dan dimanipulasi dalam satu pertanyaan. Dalam kes kami, kami boleh menggunakan CTE untuk membelah rekursif rentetan CSV dan menyimpan nilai yang diekstrak dalam jadual baharu. Berikut ialah pertanyaannya:

WITH split(word, csv) AS (
  -- 'initial query'
  SELECT
    '',
    'Auto,A,1234444'||',' -- terminate with ',' indicating csv ending
  -- 'recursive query'
  UNION ALL SELECT
    substr(csv, 0, instr(csv, ',')), -- each word contains text up to next ','
    substr(csv, instr(csv, ',') + 1) -- next recursion parses csv after this ','
  FROM split -- recurse
  WHERE csv != '' -- break recursion once no more csv words exist
)
SELECT
  word
FROM
  split
WHERE
  word!=''; -- filter out 1st/last rows
Salin selepas log masuk

Pertanyaan ini memisahkan rentetan CSV menggunakan fungsi instr() untuk mencari koma pertama, mengekstrak subrentetan sebelum koma dan secara rekursif memanggil dirinya untuk mengulangi proses pada bahagian yang tinggal daripada rentetan. Rekursi ditamatkan apabila tiada lagi koma yang tinggal.

Output yang terhasil mengandungi nilai individu yang diekstrak daripada rentetan CSV asal, disusun ke dalam baris:

Auto
A
1234444
Salin selepas log masuk

Pendekatan ini memberikan yang berkuasa dan cara yang fleksibel untuk memisahkan nilai yang dipisahkan koma dalam SQLite, menjadikannya alat yang berharga untuk tugas manipulasi data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dalam SQLite Menggunakan Ungkapan Jadual Biasa (CTE)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan