Berikut adalah tiga opsi untuk mengembalikan baris yang berisi karakter huruf besar di SQLite.
Contoh Data
Misalkan kita memiliki tabel dengan data berikut:
.nullvalue null
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 LOWER()
String
Kita dapat 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
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).
SQLite melakukan pencarian peka huruf besar/kecil, sehingga kita tidak perlu melakukan hal lain untuk mendapatkan hasil yang kita inginkan.
Anda mungkin telah memperhatikan bahwa contoh di atas tidak mengembalikan karakter unicode huruf besar É
dan Ø
kecuali nilainya juga termasuk huruf besar non-unicode. SQLite tidak sepenuhnya mendukung karakter unicode. Misalnya, LOWER()
dan UPPER()
fungsi hanya menyediakan pemetaan kasus untuk 26 huruf yang digunakan dalam bahasa Inggris. Oleh karena itu, contoh di atas tidak mengonversi karakter unicode apa pun ke huruf kecil yang setara.
Lihatlah ekstensi SQLite ICU jika Anda perlu bekerja dengan karakter unicode.
Opsi 2:Bandingkan dengan Karakter Sebenarnya
Pilihan lainnya adalah dengan menggunakan REGEXP
operator dengan pola ekspresi reguler yang secara eksplisit menyertakan setiap karakter huruf besar yang ingin kita cocokkan:
SELECT c1 FROM t1
WHERE c1 REGEXP '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';
Hasil:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007
Kami dapat memasukkan karakter unicode dalam daftar kami jika kami ingin:
SELECT c1 FROM t1
WHERE c1 REGEXP '[ÉØABCDEFGHIJKLMNOPQRSTUVWXYZ]';
Hasil:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007 É É 123 Ø
Opsi 3:Bandingkan dengan Rentang Karakter
Cara lain untuk melakukannya adalah dengan menentukan rentang karakter huruf besar yang ingin kita cocokkan:
SELECT c1 FROM t1
WHERE c1 REGEXP '[A-Z]';
Hasil:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007