Mengendalikan Case-sensitivity dari Pengurutan String - MySQL Dasar #38

Dalam praktik ini dimislakan Anda memiliki sebuah tabel dengan nama nil_textblob

Daftar isi : Pengurutan Hasil Query 

MariaDB [root93]> CREATE TABLE nil_textblob
    -> (tstr TEXT,
    -> bstr BLOB);
Query OK, 0 rows affected (0.31 sec)

MariaDB [root93]> INSERT INTO nil_textblob VALUES ('aaa','aaa');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO nil_textblob VALUES ('AAA','AAA');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO nil_textblob VALUES ('ccc','ccc');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO nil_textblob VALUES ('CCC','CCC');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> SELECT * FROM nil_textblob;
+------+------+
| tstr | bstr |
+------+------+
| aaa  | aaa  |
| AAA  | AAA  |
| ccc  | ccc  |
| CCC  | CCC  |
+------+------+
4 rows in set (0.00 sec)

MariaDB [root93]>

Kedua kolom memuat nilai - nilai yang sama, tetapi menampilkan hasil pengurutan berbeda karena kolom dengan tipe TEXT tidak berawatak case sensitive dan kolom BLOB berwatak case-sensitive. Perhatikan hasil query berikut :

MariaDB [root93]> SELECT tstr FROM nil_textblob ORDER by tstr;
+------+
| tstr |
+------+
| aaa  |
| AAA  |
| ccc  |
| CCC  |
+------+
4 rows in set (0.00 sec)

MariaDB [root93]> SELECT bstr FROM nil_textblob ORDER by bstr;
+------+
| bstr |
+------+
| AAA  |
| CCC  |
| aaa  |
| ccc  |
+------+
4 rows in set (0.00 sec)

Jika Anda ingin mengahsilkan pengurutan yang sesuai pada nilai kolom yang tidak berwatak case-sensitive, maka Anda perlu menggunakan tambahan parameter BINARY. Penggunaan BINARY sudah pernah dijelaskan pada bahasan tentang Mengatasi Sensitivitas Huruf Pada Perbandingan String.

Contoh pengurutan untuk nilai kolom yang tidak berawatak case-sensitive

Metode lain untuk menghasilkan pengurutan yang sesuai adalah dengan cara mengonversi kolom keluaran menjadi biner dan mengurutkannya seperti berikut

MariaDB [root93]> SELECT tstr FROM nil_textblob ORDER by BINARY tstr;
+------+
| tstr |
+------+
| AAA  |
| CCC  |
| aaa  |
| ccc  |
+------+
4 rows in set (0.00 sec)

MariaDB [root93]> SELECT BINARY tstr FROM nil_textblob ORDER by 1;
+-------------+
| BINARY tstr |
+-------------+
| AAA         |
| CCC         |
| aaa         |
| ccc         |
+-------------+
4 rows in set (0.00 sec)

Selain menambahkan perintah BINARY, Anda juga bisa menggunakan fungsi CAST lalu diikuti dengan nama kolom dan tambahan alias BINARY

MariaDB [root93]> SELECT tstr FROM nil_textblob ORDER by CAST(tstr AS BINARY);
+------+
| tstr |
+------+
| AAA  |
| CCC  |
| aaa  |
| ccc  |
+------+
4 rows in set (0.00 sec)

Operasi komplementer adalah digunakan untuk membuat string - string biner dengan gaya tidak case-sensitive. Untuk melakukannya, Anda bisa menggunakan perintah UPPER dan LOWER, sehingga nilai akan terkonversi menjadi huruf besar atau kecil. Penggunaan LOWER dan UPPER ini juga pernah ada dalam pembahasan tentang Mengatasi Sensitivitas Huruf pada pencocokan Pola

Implementasi UPPER atau LOWER untuk mengurutkan hasil query sangatlah mudah. Contohnya seperti berikut :

MariaDB [root93]> SELECT UPPER(tstr) FROM nil_textblob ORDER by 1;
+-------------+
| UPPER(tstr) |
+-------------+
| AAA         |
| AAA         |
| CCC         |
| CCC         |
+-------------+
4 rows in set (0.00 sec)

MariaDB [root93]> SELECT bstr FROM nil_textblob ORDER BY UPPER(bstr);
+------+
| bstr |
+------+
| AAA  |
| CCC  |
| aaa  |
| ccc  |
+------+
4 rows in set (0.00 sec)

MariaDB [root93]> SELECT UPPER(bstr) FROM nil_textblob ORDER BY 1;
+-------------+
| UPPER(bstr) |
+-------------+
| AAA         |
| CCC         |
| aaa         |
| ccc         |
+-------------+
4 rows in set (0.00 sec)

Baca Selanjutnya : Mengurutkan Berdasarkan Tanggal - MySQL Dasar #39

0 Response to "Mengendalikan Case-sensitivity dari Pengurutan String - MySQL Dasar #38"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin