PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

2 Cara Mengembalikan Baris yang Mengandung Karakter Non-Alfanumerik di PostgreSQL

Di bawah ini adalah dua opsi untuk mengembalikan baris yang hanya berisi karakter non-alfanumerik di PostgreSQL.

Karakter non-alfanumerik mencakup karakter tanda baca seperti [email protected]#&()–[{}]:;',?/* dan simbol seperti `~$^+=<>“ , serta karakter spasi putih seperti karakter spasi atau tab.

Contoh Data

Kami akan menggunakan data berikut untuk contoh kami:

SELECT c1 FROM t1;

Hasil:

+----------------------+
| c1                   |
+----------------------+
| Music                |
| Live Music           |
| Café                 |
| Café Del Mar         |
| 100 Cafés            |
| [email protected]    |
| 1 + 1                |
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
| $1.50                |
| Player 456           |
| 007                  |
| NULL                 |
|                      |
| é                    |
| É                    |
| é 123                |
| ø                    |
| ø 123                |
+----------------------+

Opsi 1:Bandingkan dengan [:alnum:]

Kita dapat menggunakan !~ operator untuk membandingkan kolom kami dengan ekspresi reguler. Kami menggunakan operator ini ketika kami ingin menetapkan bahwa nilainya tidak cocok dengan ekspresi reguler.

Kemampuan ekspresi reguler MySQL mencakup dukungan untuk kelas karakter POSIX. Oleh karena itu, kita dapat menggunakan [:alnum:] Kelas karakter POSIX dalam ekspresi reguler kami.

SELECT c1 FROM t1 
WHERE c1 !~ '[[:alnum:]]';

Hasil:

 ()
 [email protected]#&()–[{}]:;',?/*
 `~$^+=<>“
 

String kosong juga num-numerik, dan contoh itu mengembalikan baris yang berisi string kosong.

Kita dapat mengecualikan string kosong dengan menggunakan NULLIF() :

SELECT c1 FROM t1 
WHERE NULLIF(c1, '') !~ '[[:alnum:]]';

Hasil:

 ()
 [email protected]#&()–[{}]:;',?/*
 `~$^+=<>“

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 !~ '[A-Za-z0-9]';

Hasil:

 ()
 [email protected]#&()–[{}]:;',?/*
 `~$^+=<>“
 
 é
 É
 ø

Dan untuk menghapus string kosong:

SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]';

Hasil:

 ()
 [email protected]#&()–[{}]:;',?/*
 `~$^+=<>“
 
 é
 É
 ø

Dalam hal ini, rentang pengecualian saya tidak mencakup karakter alfanumerik seperti é , É , dan ø , dan hasilnya 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:Berbeda tetapi hanya untuk satu kolom

  2. Menggunakan Kubernetes untuk Menerapkan PostgreSQL

  3. Membandingkan Penyimpanan Data untuk PostgreSQL - MVCC vs InnoDB

  4. Menggabungkan (x,y) awan titik koordinat di PostgreSQL

  5. PostgreSQL 12:Kunci Asing dan Tabel yang Dipartisi