Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengekstrak Digit Berturut-turut daripada Medan Teks MySQL dan Menggunakan Kriteria Tambahan?

Bagaimana untuk Mengekstrak Digit Berturut-turut daripada Medan Teks MySQL dan Menggunakan Kriteria Tambahan?

Barbara Streisand
Barbara Streisandasal
2024-12-18 13:15:19622semak imbas

How to Extract Consecutive Digits from a MySQL Text Field and Apply Additional Criteria?

Mengekstrak Digit Berturut-turut daripada Medan Teks MySQL

Dalam MySQL, pertanyaan berikut boleh mengesan medan teks yang mengandungi nombor 2 digit:

SELECT `id`, `originaltext` FROM `source` WHERE `originaltext` regexp '[0-9][0-9]'

Walau bagaimanapun, untuk memanipulasi nombor ini sebagai medan yang berasingan, pemprosesan selanjutnya diperlukan. Berikut ialah dua penyelesaian yang berpotensi:

Menggunakan LIB_MYSQLUDF_PREG

LIB_MYSQLUDF_PREG ialah perpustakaan MySQL yang mempertingkatkan fungsi ekspresi biasa. Ia memperkenalkan fungsi seperti PREG_CAPTURE, yang boleh mengekstrak padanan daripada rentetan.

Untuk menggunakan pustaka ini, anda mesti memasangnya ke dalam pelayan MySQL anda. Setelah dipasang, anda boleh menggunakan pertanyaan berikut untuk mengekstrak digit berturut-turut:

SELECT `id`, PREG_CAPTURE('[0-9][0-9]', `originaltext`) AS `digits` FROM `source`

Menggunakan Fungsi MySQL Tersuai

Sebagai alternatif, anda boleh menentukan fungsi MySQL tersuai yang melakukan pengekstrakan. Sebagai contoh, fungsi berikut akan mengekstrak jujukan padanan terpanjang pertama bagi digit:

CREATE FUNCTION REGEXP_EXTRACT(string TEXT, exp TEXT)
RETURNS TEXT
DETERMINISTIC
BEGIN
  DECLARE s INT DEFAULT 1;
  ...
  -- Implementation to extract the matching digits
  ...
END

Untuk menggunakan fungsi ini, panggilnya seperti berikut:

SELECT `id`, REGEXP_EXTRACT(`originaltext`, '[0-9][0-9]') AS `digits` FROM `source`

Kriteria Tambahan ( Nombor > 20)

Untuk menambah kriteria bahawa nombor harus lebih besar daripada 20, cuma tambahkan syarat ini pada klausa WHERE bagi mana-mana pertanyaan:

WHERE `digits` > 20

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Digit Berturut-turut daripada Medan Teks MySQL dan Menggunakan Kriteria Tambahan?. 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