Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

4 Cara Menemukan Baris yang Mengandung Huruf Besar di Oracle

Berikut adalah empat opsi untuk mengembalikan baris yang berisi karakter huruf besar di Oracle Database.

Contoh Data

Misalkan kita memiliki tabel dengan data berikut:

SELECT c1 FROM t1;

Hasil:

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

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

Opsi 1:Bandingkan dengan Kelas Karakter POSIX

REGEXP_LIKE Oracle kondisi sesuai dengan standar ekspresi reguler POSIX dan Pedoman Ekspresi Reguler Unicode. Oleh karena itu, kita dapat menggunakan [:upper:] Kelas karakter POSIX untuk memeriksa karakter huruf besar:

SELECT c1 FROM t1
WHERE REGEXP_LIKE(c1, '[[:upper:]]');

Hasil:

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

Opsi 2:Bandingkan dengan LOWER() String

Kita dapat menggunakan LOWER() fungsi untuk membandingkan nilai asli dengan ekuivalen huruf kecilnya:

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

Hasil:

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, Oracle melakukan pencarian peka huruf besar/kecil, jadi saya tidak perlu melakukan hal lain pada kueri untuk membuatnya peka huruf besar/kecil.

Opsi 3:Bandingkan dengan Karakter Sebenarnya

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

SELECT c1 FROM t1
WHERE REGEXP_LIKE(c1, '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]', 'c');

Hasil:

CAFÉ
Café
eCafé
James Bond 007
JB 007

'c' menentukan pencocokan peka huruf besar/kecil dan peka aksen, meskipun susunan kondisi yang ditentukan tidak peka huruf besar/kecil atau tidak peka aksen.

Kali ini lebih sedikit baris yang dikembalikan daripada di contoh sebelumnya. Itu 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, Anda harus memastikan bahwa Anda memiliki semua karakter yang valid yang tercakup jika menggunakan opsi ini.

Ini dia lagi dengan dua karakter yang disertakan:

SELECT c1 FROM t1
WHERE REGEXP_LIKE(c1, '[ÉØABCDEFGHIJKLMNOPQRSTUVWXYZ]', 'c');

Hasil:

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

Opsi 4:Bandingkan dengan Rentang Karakter

Cara lain untuk melakukannya adalah dengan menentukan rentang karakter huruf besar yang ingin kita cocokkan:

SELECT c1 FROM t1
WHERE REGEXP_LIKE(c1, '[A-Z]', 'c');

Hasil:

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. Cara Mengaktifkan Mode Log Arsip Di Oracle Database 19c

  2. SQLT di 12c Tidak Dapat Mengumpulkan Statistik

  3. koneksi oci_connect gagal

  4. Alat untuk menghasilkan diagram database/diagram ER dari database Oracle yang ada?

  5. Perbarui beberapa nilai kolom tabel menggunakan kueri tunggal