Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?

Bagaimana untuk Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?

Barbara Streisand
Lepaskan: 2024-12-01 14:18:13
asal
652 orang telah melayarinya

How to Efficiently Remove Non-Alphanumeric Characters from Strings in MySQL?

Mengalih keluar Aksara Bukan Abjad Angka dengan Cekap daripada Rentetan dalam MySQL

Dalam MySQL, membandingkan rentetan boleh menjadi tugas yang intensif prestasi. Untuk mengoptimumkan kecekapan, selalunya berfaedah untuk mengalih keluar aksara bukan abjad sebelum melakukan perbandingan. Mari kita terokai pendekatan yang berbeza untuk mencapai ini, termasuk memanfaatkan kefungsian regex dan mencipta fungsi tersuai.

MySQL 8.0 dan Lebih Tinggi: Menggunakan Regex

Dengan MySQL 8.0 atau versi yang lebih baru, anda boleh menggunakan regex (ungkapan biasa) untuk menggantikan aksara bukan abjad angka. Pernyataan SQL berikut menunjukkan pendekatan ini:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Salin selepas log masuk

Dalam pernyataan ini, regex [^0-9a-zÀ-ÿ ] sepadan dengan mana-mana aksara yang bukan nombor, huruf, ruang atau aksara beraksen.

MySQL 5.7 dan Lebih Rendah: Mencipta Tersuai Fungsi

Untuk versi MySQL terdahulu (5.7 atau lebih rendah), fungsi regex tidak tersedia. Sebagai alternatif, anda boleh mencipta fungsi tersuai yang menghilangkan aksara bukan abjad angka. Berikut ialah contoh pelaksanaan:

DROP FUNCTION IF EXISTS alphanum;
DELIMITER |
CREATE FUNCTION alphanum(str CHAR(255)) RETURNS CHAR(255) DETERMINISTIC
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1;
  DECLARE ret CHAR(255) DEFAULT '';
  DECLARE c CHAR(1);
  IF str IS NOT NULL THEN
    SET len = CHAR_LENGTH(str);
    REPEAT
      BEGIN
        SET c = MID(str, i, 1);
        IF c REGEXP '[[:alnum:]]' THEN
          SET ret=CONCAT(ret,c);
        END IF;
        SET i = i + 1;
      END;
    UNTIL i > len END REPEAT;
  ELSE
    SET ret='';
  END IF;
  RETURN ret;
END |
DELIMITER ;
Salin selepas log masuk

Setelah dibuat, anda boleh menggunakan fungsi ini untuk menanggalkan aksara bukan abjad, seperti yang ditunjukkan di bawah:

select 'This works finally!', alphanum('This works finally!');
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?. 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