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

2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Alfanumerik di PostgreSQL

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

Karakter alfanumerik adalah karakter alfabet dan karakter numerik.

Contoh Data

Kami akan menggunakan data berikut untuk contoh kami:

SELECT c1 FROM t1;

Hasil:

 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 ~ dari PostgreSQL operator untuk membandingkan nilai dengan ekspresi reguler.

Kemampuan ekspresi reguler PostgreSQL mencakup dukungan untuk kelas karakter POSIX. Oleh karena itu, kita dapat menggunakan [:alnum:] Kelas karakter POSIX dalam ekspresi reguler kami untuk menemukan baris yang berisi karakter alfanumerik.

SELECT c1 FROM t1 
WHERE c1 ~ '^[[:alnum:]]+$';

Hasil:

 Music
 Café
 007
 é
 É
 ø

Itu hanya mengembalikan nilai yang hanya terdiri dari karakter alfanumerik. Jika baris berisi karakter alfanumerik dan non-alfanumerik, baris tidak akan dikembalikan.

Perhatikan bahwa karakter spasi dianggap non-alfanumerik, jadi jika kita ingin memasukkan spasi, kita bisa melakukan ini:

SELECT c1 FROM t1 
WHERE c1 ~ '^[[:alnum:] ]+$';

Hasil:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 Player 456
 007
 é
 É
 é 123
 ø
 ø 123

Untuk mengembalikan semua baris yang berisi karakter alfanumerik (meskipun baris juga berisi karakter non-alfanumerik), kita dapat melakukan ini:

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

Hasil:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 [email protected]
 1 + 1
 $1.50
 Player 456
 007
 é
 É
 é 123
 ø
 ø 123

Opsi 2:Tentukan Rentang Karakter

Cara lain untuk melakukannya adalah dengan menentukan rentang karakter dalam ekspresi reguler.

Contoh:

SELECT c1 FROM t1
WHERE c1 ~ '^[A-Za-z0-9]+$';

Hasil:

 Music
 007

Anda akan melihat bahwa ini mengembalikan lebih sedikit baris dibandingkan dengan contoh pertama kami. Itu karena saya tidak menyertakan é , É , atau ø karakter dalam jangkauan saya, dan setiap baris yang berisi karakter tersebut dikecualikan dari output.

Oleh karena itu, sangat penting untuk berhati-hati saat menggunakan metode ini. Akan mudah untuk secara tidak sengaja mengecualikan karakter yang harus Anda sertakan.

Namun, dengan mempertahankan rentang ini, kami dapat menyertakan spasi seperti ini:

SELECT c1 FROM t1 
WHERE c1 ~ '^[A-Za-z0-9 ]+$';

Hasil:

 Music
 Live Music
 Player 456
 007

Dan kita dapat menggunakan yang berikut ini untuk memasukkan semua baris yang berisi karakter dari jangkauan kami (meskipun mereka juga mengandung karakter di luar kisaran ini):

SELECT c1 FROM t1 
WHERE c1 ~ '[A-Za-z0-9]';

Hasil:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 [email protected]
 1 + 1
 $1.50
 Player 456
 007
 é 123
 ø 123


  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 INTERVAL menggunakan nilai dari tabel

  2. Menulis ke skema tertentu dengan RPostgreSQL

  3. Bagaimana Postgresql SALIN KE STDIN Dengan CSV lakukan saat konflik melakukan pembaruan?

  4. Intel SSD, sekarang keluar dari daftar sh..err, malu

  5. Apa yang harus dilakukan dengan nilai nol saat pemodelan dan normalisasi?