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

Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dengan Mudah dalam SQLite Menggunakan Ungkapan Jadual Biasa?

DDD
Lepaskan: 2025-01-03 00:11:42
asal
594 orang telah melayarinya

How Can I Easily Split Comma-Separated Values in SQLite Using Common Table Expressions?

Mencipta Pendekatan Mudah untuk Memisahkan Nilai Dipisahkan Koma dalam SQLite

Pengenalan

Mengekstrak nilai individu daripada dipisahkan koma rentetan adalah keperluan biasa dalam analisis data. Dalam SQLite, tiada persamaan langsung dengan fungsi SubString() SQL, menjadikan tugas ini agak mencabar. Walau bagaimanapun, dengan bantuan Ungkapan Jadual Biasa (CTE), kami boleh mencipta penyelesaian yang cekap dan intuitif.

Penyelesaian: Menggunakan CTE

CTE membolehkan kami untuk mentakrif dan menamakan set hasil sementara. Dengan memanfaatkan rekursi dalam CTE, kami boleh menghuraikan rentetan yang dipisahkan koma secara berulang, mengekstrak setiap nilai satu demi satu.

Pengisytiharan CTE dalam kes kami kelihatan seperti ini:

WITH split(word, csv) AS (
  -- 'initial query' (see SQLite docs linked above)
  SELECT 
    '', 
    'Auto,A,1234444'||','
  
  -- 'recursive query'
  UNION ALL SELECT
    substr(csv, 0, instr(csv, ',')), 
    substr(csv, instr(csv, ',') + 1)
  FROM split
  WHERE csv != ''
)
Salin selepas log masuk

Dalam 'pertanyaan awal,' kami mencipta titik permulaan untuk bahagian rekursif CTE. Kami menentukan rentetan kosong untuk 'perkataan' dan menambahkan rentetan yang dipisahkan koma dengan koma tambahan untuk menunjukkan penghujung CSV.

'Pertanyaan rekursif' ialah tempat keajaiban berlaku. Ia menggunakan fungsi instr() untuk mencari kedudukan koma pertama dalam medan 'csv'. Kemudian, ia membahagikan medan 'csv' menggunakan substr() kepada 'word' dan bahagian 'csv' yang tinggal.

Rekursi digunakan untuk terus membelah bahagian 'csv' yang tinggal sehingga tiada lagi koma yang tinggal , dengan berkesan mengekstrak semua nilai yang dipisahkan koma.

Mengambil semula Split Nilai

Setelah CTE mentakrifkan nilai pecahan, kita boleh mendapatkannya menggunakan pertanyaan mudah:

SELECT word FROM split 
WHERE word!='';
Salin selepas log masuk

Klausa WHERE menapis rentetan kosong yang mewakili permulaan dan nilai terminal.

Output dan Faedah

Output pertanyaan adalah seperti berikut:

Auto
A
1234444
Salin selepas log masuk

Pendekatan ini memberikan beberapa faedah:

  • Ia menggunakan CTE rekursif, yang ialah cara yang elegan dan cekap untuk mengendalikan sifat pembelahan berulang.
  • Outputnya mudah difahami dan berfungsi dengan.
  • Ia tidak memerlukan penggunaan fungsi Ganti() dan Trim(), yang boleh menjadi lebih kompleks dan mudah ralat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dengan Mudah dalam SQLite Menggunakan Ungkapan Jadual Biasa?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan