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

4 Cara Menemukan Baris yang Mengandung Karakter Huruf Besar di PostgreSQL

Berikut adalah empat opsi untuk mengembalikan baris yang berisi huruf besar di PostgreSQL.

Contoh Data

Misalkan kita memiliki tabel dengan data berikut:

SELECT c1 FROM t1;

Hasil:

       c1       
----------------
 CAFÉ
 Café
 café
 1café
 eCafé
 James Bond 007
 JB 007
 007
 null
 
 É
 É 123
 é
 é 123
 ø
 Ø

Kita dapat menggunakan metode berikut untuk mengembalikan baris yang berisi huruf besar.

Opsi 1:Bandingkan dengan Kelas Karakter POSIX

Kita dapat menggunakan ~ operator untuk melakukan pencocokan peka huruf besar/kecil dari pola ekspresi reguler. Polanya bisa sesederhana atau serumit yang kita suka.

Opsi sederhana adalah membandingkan kolom kita dengan [:upper:] Kelas karakter POSIX:

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

Hasil:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007
 É
 É 123
 Ø

Opsi 2:Bandingkan dengan LOWER() String

Pilihan lain adalah dengan menggunakan LOWER() fungsi untuk membandingkan nilai asli dengan ekuivalen huruf kecilnya:

SELECT c1 FROM t1
WHERE LOWER(c1) <> c1;

Hasil:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007
 É
 É 123
 Ø

Dengan menggunakan tidak sama dengan (<> ) operator (sebagai alternatif, Anda dapat menggunakan != bukannya <> jika Anda mau), kami hanya mengembalikan baris yang berbeda dengan persamaan huruf kecilnya. Alasan kami melakukan ini adalah karena, jika suatu nilai sama dengan ekuivalen huruf kecilnya, maka itu adalah huruf kecil untuk memulainya (dan kami tidak ingin mengembalikannya).

Secara default, PostgreSQL melakukan pencocokan peka huruf besar/kecil, sehingga kita tidak perlu menentukan susunan peka huruf besar/kecil untuk mendapatkan hasil yang kita inginkan.

Opsi 3:Bandingkan dengan Karakter Sebenarnya

Pilihan lainnya adalah menggunakan the ~ operator dengan pola ekspresi reguler yang secara eksplisit menyertakan setiap karakter huruf besar yang ingin kita cocokkan:

SELECT c1 FROM t1
WHERE c1 ~ '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';

Hasil:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007

Dalam hal ini, lebih sedikit baris yang dikembalikan daripada contoh sebelumnya. Ini karena saya tidak menentukan karakter seperti É dan Ø , yang dikembalikan dalam contoh tersebut. Hasil kami memang mengandung É tetapi baris itu hanya dikembalikan karena juga berisi karakter huruf besar lain yang lakukan cocok.

Oleh karena itu, opsi ini lebih terbatas daripada yang sebelumnya, tetapi memberikan Anda kontrol lebih besar atas karakter yang ingin Anda cocokkan.

Opsi 4:Bandingkan dengan Rentang Karakter

Sebagai alternatif, kita dapat menentukan rentang karakter yang ingin kita cocokkan:

SELECT c1 FROM t1
WHERE c1 ~ '[A-Z]';

Hasil:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membaca konten file .sql menjadi skrip R untuk menjalankan kueri?

  2. Apa yang dimaksud dengan Kesalahan Impor:Simbol tidak ditemukan:_PQencryptPasswordConn dan bagaimana cara memperbaikinya?

  3. Driver JDBC PostgreSQL dengan Android

  4. Nama tabel huruf besar JPA

  5. postgreSQL - dalam vs apa pun