Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?

Bagaimanakah Saya Boleh Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?

Susan Sarandon
Lepaskan: 2024-11-30 16:30:12
asal
479 orang telah melayarinya

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

Melucutkan Aksara Bukan Alfanumerik daripada Rentetan dalam MySQL

Masalah:

Apabila membandingkan rentetan dalam MySQL, kecekapan boleh dipertingkatkan dengan mengalih keluar semua aksara bukan abjad angka. Pada masa ini, pelbagai fungsi REPLACE sedang digunakan, tetapi penyelesaian yang lebih cekap dan elegan dicari.

Penyelesaian:

Untuk MySQL 8.0 atau lebih tinggi:

MySQL kini menyokong penggantian Regex, menjadikannya mungkin untuk mengalih keluar aksara bukan abjad angka dengan pernyataan tunggal:

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

Untuk MySQL 5.7 atau lebih rendah:

Sokongan Regex tidak tersedia. Fungsi tersuai, 'alphanum,' boleh dibuat untuk melakukan pelucutan aksara:

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

Fungsi ini kemudiannya boleh digunakan untuk menanggalkan aksara bukan abjad angka daripada rentetan:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh 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