Sensitivitas Huruf Pada Pencocokan Pola – MySQL Dasar #13

Sensitivitas Huruf Pada Pencocokan Pola MySQL root93


Pencocokan pola melibatkan metacharacter dengan operator LIKE atau REGEXP, dimana sama halnya seperti sebelumnya dalam operasi perbandingan string, pencocokan pola juga memiliki sifat tidak case-sensitive, artinya huruf besar dan kecil akan dianggap sama seperti yang terlihat pada hasil query dibawah ini



MariaDB [codexam]> SELECT nama, nama LIKE '%g%', nama LIKE '%G%' FROM buah;
+-----------+-----------------+-----------------+
| nama      | nama LIKE '%g%' | nama LIKE '%G%' |
+-----------+-----------------+-----------------+
| anggur    |               1 |               1 |
| apel      |               0 |               0 |
| durian    |               0 |               0 |
| dukuh     |               0 |               0 |
| melon     |               0 |               0 |
| mangga    |               1 |               1 |
| manggis   |               1 |               1 |
| markisa   |               0 |               0 |
| jeruk     |               0 |               0 |
| lemon     |               0 |               0 |
| strobery  |               0 |               0 |
| udun      |               0 |               0 |
| ogon-ogon |               1 |               1 |
+-----------+-----------------+-----------------+
13 rows in set (0.00 sec)


Hasil diatas menunjukan nilai G juga mengembalikan nilai true, padahal seharusnya tidak demikian ketika memang kita menginginkan adanya perbedaan antar ‘g’ dengan ‘G’


begitupun dengan REGEXP juga tidak case-sensitive seperti berikut :


MariaDB [codexam]> SELECT nama, nama REGEXP 'n', nama REGEXP 'N' FROM buah;
+-----------+-----------------+-----------------+
| nama      | nama REGEXP 'n' | nama REGEXP 'N' |
+-----------+-----------------+-----------------+
| anggur    |               1 |               1 |
| apel      |               0 |               0 |
| durian    |               1 |               1 |
| dukuh     |               0 |               0 |
| melon     |               1 |               1 |
| mangga    |               1 |               1 |
| manggis   |               1 |               1 |
| markisa   |               0 |               0 |
| jeruk     |               0 |               0 |
| lemon     |               1 |               1 |
| strobery  |               0 |               0 |
| udun      |               1 |               1 |
| ogon-ogon |               1 |               1 |
+-----------+-----------------+-----------------+
13 rows in set (0.00 sec)


Untuk mengatasi ketidak sensitivan nilai pada pencocokan pola, Anda hanya perlu menambahkan parameter BINARY seperti berikut ini


MariaDB [codexam]> SELECT nama, BINARY nama LIKE '%g%', BINARY nama REGEXP'G' FROM buah;
+-----------+------------------------+-----------------------+
| nama      | BINARY nama LIKE '%g%' | BINARY nama REGEXP'G' |
+-----------+------------------------+-----------------------+
| anggur    |                      1 |                     0 |
| apel      |                      0 |                     0 |
| durian    |                      0 |                     0 |
| dukuh     |                      0 |                     0 |
| melon     |                      0 |                     0 |
| mangga    |                      1 |                     0 |
| manggis   |                      1 |                     0 |
| markisa   |                      0 |                     0 |
| jeruk     |                      0 |                     0 |
| lemon     |                      0 |                     0 |
| strobery  |                      0 |                     0 |
| udun      |                      0 |                     0 |
| ogon-ogon |                      1 |                     0 |
+-----------+------------------------+-----------------------+
13 rows in set (0.00 sec)


Pencocokan Pola Pada Data Biner

Ketika mendefinisikan atau membuat sebuah kolom pada tabel Anda bisa membuat penyortirannya ke jenis biner atau digambarkan dengan utf8mb4_bin sedangkan secara default jika kita tidak mendefinisikan untuk penyortirannya adalah utf8mb4_general_ci.


Pencocokan pola pada kolom biner bersifat case sensitive artinya huruf besar dan kecil dibedakan, sehingga ini berkembalikan dengan sebelumnya yang bersifat tidak case sensitive. Untuk mendemontrasikan hal ini Anda perlu membuat kolom data baru dengan penyortiran biner seperti berikut


MariaDB [codexam]> ALTER TABLE buah ADD nama2 varchar(20) BINARY;
Query OK, 0 rows affected (0.50 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [codexam]> UPDATE buah SET nama2=nama;
Query OK, 13 rows affected (0.04 sec)
Rows matched: 13  Changed: 13  Warnings: 0

MariaDB [codexam]> SELECT * FROM buah;
+-----------+-----------+
| nama      | nama2     |
+-----------+-----------+
| anggur    | anggur    |
| apel      | apel      |
| durian    | durian    |
| dukuh     | dukuh     |
| melon     | melon     |
| mangga    | mangga    |
| manggis   | manggis   |
| markisa   | markisa   |
| jeruk     | jeruk     |
| lemon     | lemon     |
| strobery  | strobery  |
| udun      | udun      |
| ogon-ogon | ogon-ogon |
+-----------+-----------+
13 rows in set (0.00 sec)

Pencocokan pola dibawah ini akan menunjukan bahwa kolom nama2 memiliki sifat case-sensitive , ini ditunjukan dengan nilai yang dihasilkan mengembalikan false untuk semua buah yang berisi string ‘G’


MariaDB [codexam]> SELECT nama2, nama2 LIKE '%G%', nama2 REGEXP 'G' FROM buah;
+-----------+------------------+------------------+
| nama2     | nama2 LIKE '%G%' | nama2 REGEXP 'G' |
+-----------+------------------+------------------+
| anggur    |                0 |                0 |
| apel      |                0 |                0 |
| durian    |                0 |                0 |
| dukuh     |                0 |                0 |
| melon     |                0 |                0 |
| mangga    |                0 |                0 |
| manggis   |                0 |                0 |
| markisa   |                0 |                0 |
| jeruk     |                0 |                0 |
| lemon     |                0 |                0 |
| strobery  |                0 |                0 |
| udun      |                0 |                0 |
| ogon-ogon |                0 |                0 |
+-----------+------------------+------------------+
13 rows in set (0.00 sec)

Jika misalnya Anda menginginkan pencocokan pola supaya tidak case-sensitive Anda bisa membuat nilai operand dari keduanya menjadi sama, misalnya menjadikan keduanya huruf besar atau kecil, operand yang dimaksud ini adalah nilai_data/nama_kolom dan nilai yang akan dicocokan didalam operator LIKE atau REGEXP. Perhatikan bagaimana query dibawah ini akan memaksa kolom nama2 menjadi tidak case-sensitive


MariaDB [codexam]> SELECT nama2, UPPER(nama2) LIKE '%G%', UPPER(nama2) REGEXP'G' FROM buah;
+-----------+-------------------------+------------------------+
| nama2     | UPPER(nama2) LIKE '%G%' | UPPER(nama2) REGEXP'G' |
+-----------+-------------------------+------------------------+
| anggur    |                       1 |                      1 |
| apel      |                       0 |                      0 |
| durian    |                       0 |                      0 |
| dukuh     |                       0 |                      0 |
| melon     |                       0 |                      0 |
| mangga    |                       1 |                      1 |
| manggis   |                       1 |                      1 |
| markisa   |                       0 |                      0 |
| jeruk     |                       0 |                      0 |
| lemon     |                       0 |                      0 |
| strobery  |                       0 |                      0 |
| udun      |                       0 |                      0 |
| ogon-ogon |                       1 |                      1 |
+-----------+-------------------------+------------------------+
13 rows in set (0.00 sec)


Baca selanjutnya : Tanggal dan Waktu – MySQL Dasar #14

0 Response to "Sensitivitas Huruf Pada Pencocokan Pola – MySQL Dasar #13"

Post a Comment

Silahkan untuk meninggalkan komentar, santai saja dan mulailah berkomentar...