Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengeluarkan Nilai Khusus daripada Senarai Dipisahkan Koma yang Mengandungi NULL Menggunakan REGEXP_SUBSTR()?

Bagaimana untuk Mengeluarkan Nilai Khusus daripada Senarai Dipisahkan Koma yang Mengandungi NULL Menggunakan REGEXP_SUBSTR()?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 00:44:13342semak imbas

How to Reliably Extract Specific Values from Comma-Separated Lists Containing NULLs Using REGEXP_SUBSTR()?

EKSPRESI BIASA UNTUK MEMILIH NILAI INDIVIDU DARIPADA SENARAI YANG NULL

Isu:

REG () gagal mendapatkan nilai ke-n yang dikehendaki daripada senarai yang dipisahkan koma apabila nol hadir. Apabila nilai adalah nol, ia mengembalikan nilai bukan nol seterusnya sebagai kejadian ke-n.

Penyelesaian:

Untuk mengatasi isu ini, ungkapan REGEXP_SUBSTR() yang diubah suai boleh digunakan:

REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
Ungkapan ini menangkap data yang dikehendaki dengan mengikuti ini langkah:

    (.*?): Memadankan sifar atau lebih aksara pilihan.
  1. (,|$): Memadankan sama ada koma atau penghujung baris.
  2. 1: Menentukan bahawa kumpulan padanan pertama (subkumpulan) ialah data yang dikehendaki.
  3. 2: Menetapkan kejadian untuk memilih yang dikehendaki nilai ke-n.
  4. NULL: Mengembalikan null jika tiada padanan ditemui untuk kejadian yang ditentukan.

Fungsi Boleh Digunakan Semula:

Untuk lebih ringkas dan penggunaan yang lebih mudah, ungkapan REGEXP_SUBSTR() yang diubah suai ini boleh dikapsulkan dalam PL/SQL fungsi:

FUNCTION GET_LIST_ELEMENT(string_in VARCHAR2, element_in NUMBER, delimiter_in VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS
BEGIN
  RETURN REGEXP_SUBSTR(string_in, '(.*?)(\'||delimiter_in||'|$)', 1, element_in, NULL, 1);
END GET_LIST_ELEMENT;

Contoh Penggunaan:

Untuk mendapatkan semula elemen ke-4 daripada senarai '123,222,,432,555':

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Nilai Khusus daripada Senarai Dipisahkan Koma yang Mengandungi NULL Menggunakan REGEXP_SUBSTR()?. 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