Di bawah ini adalah dua metode untuk mengembalikan baris yang hanya berisi karakter non-alfanumerik di MariaDB.
Karakter non-alfanumerik mencakup karakter tanda baca seperti example@sqldat.com#&()–[{}]:;',?/* dan simbol seperti `~$^+=<>“ , serta karakter spasi putih seperti karakter spasi atau tab.
Contoh Data
Kami akan menggunakan data berikut untuk contoh kami:
CREATE TABLE t1 (
c1 varchar(255) NULL
);
INSERT INTO t1 VALUES
('Music'),
('Live Music'),
('Café'),
('Café Del Mar'),
('100 Cafés'),
('example@sqldat.com'),
('1 + 1'),
('()'),
('example@sqldat.com#&()–[{}]:;'',?/*'),
('`~$^+=<>“'),
('$1.50'),
('Player 456'),
('007'),
(null),
(''),
('é'),
('É'),
('é 123'),
('ø'),
('ø 123');
SELECT c1 FROM t1; Hasil:
+----------------------+
| c1 |
+----------------------+
| Music |
| Live Music |
| Café |
| Café Del Mar |
| 100 Cafés |
| example@sqldat.com |
| 1 + 1 |
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
| $1.50 |
| Player 456 |
| 007 |
| NULL |
| |
| é |
| É |
| é 123 |
| ø |
| ø 123 |
+----------------------+ Opsi 1:Bandingkan dengan [:alnum:]
Kemampuan ekspresi reguler MariaDB mencakup dukungan untuk kelas karakter POSIX. Oleh karena itu, kita dapat menggunakan [:alnum:] Kelas karakter POSIX dalam ekspresi reguler kami untuk menemukan baris yang hanya berisi karakter alfanumerik, lalu meniadakannya dengan NOT operator.
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[[:alnum:]]'; Hasil:
+----------------------+
| c1 |
+----------------------+
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
| |
+----------------------+
Jika Anda perlu mengecualikan karakter tertentu, Anda selalu dapat menggunakan NULLIF() fungsi.
Misalnya, mari kita kecualikan string kosong dari baris terakhir:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[[:alnum:]]'; Hasil:
+----------------------+
| c1 |
+----------------------+
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
+----------------------+ Opsi 2:Tentukan Rentang Karakter
Cara lain untuk melakukannya adalah dengan menentukan rentang karakter dalam ekspresi reguler Anda.
Contoh:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]'; Hasil:
+----------------------+
| c1 |
+----------------------+
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
| |
| é |
| É |
| ø |
+----------------------+ Dan untuk menghapus string kosong:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-z0-9]'; Hasil:
+----------------------+
| c1 |
+----------------------+
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
| é |
| É |
| ø |
+----------------------+
Dalam hal ini, rentang pengecualian saya tidak mencakup karakter alfanumerik seperti é , É , dan ø , sehingga outputnya bukan representasi sebenarnya dari karakter non-alfanumerik. Meskipun demikian, setidaknya metode ini memberi Anda opsi untuk menentukan karakter persis yang ingin Anda sertakan atau kecualikan dari hasil.