Skip to content


เปรียบเทียบ String แบบ Case Sensitive ใน MySQL

โดยปกติแล้วการเปรียบเทียบข้อความ (string comparison) ใน MySQL จะเป็นการเปรียบเทียบแบบ Case-Insensitive นั่นคือ ไม่สนใจตัวเล็กตัวใหญ่ หมายถึงว่า “cat” จะเท่ากับ “CAT” นั่นเอง ปัญหานี้จะพบเมื่อเราทำการเปรียบเทียบ String ที่เป็น Text ในบางครั้ง เราจำเป็นต้องเปรียบเทียบ string แบบ Case-Sensitive เช่น การค้นหา Key ที่ case ของตัวอักษรมีความสำคัญ เราสามารถทำได้หลายวิธี

แบบแรกคือ การเปรียบเทียบด้วย Binary String เช่น

mysql> SET @s = BINARY 'MySQL';
mysql> SELECT @s = 'mysql';
+--------------+
| @s = 'mysql' |
+--------------+
|            0 |
+--------------+

แบบที่สองคือ การสั่งเปลี่ยน COLLATE ให้เป็นแบบที่สนับสนุนการเปรียบเทียบแบบ case-sensitive นั่นคือ latin1_bin หรือ latin1_general_cs เช่น

mysql> SET @s1 = 'MySQL' COLLATE latin1_bin,
    ->     @s2 = 'mysql' COLLATE latin1_bin;
mysql> SELECT @s1 = @s2;
+-----------+
| @s1 = @s2 |
+-----------+
|         0 |
+-----------+

แบบที่ 3 ก็เป็นการเปลี่ยน Collation เช่นเดียวกัน แต่เป็นการไปตั้งค่าที่ field ใน table ของเราเลยครับ แค่เพียงเลือก field ที่ต้องการ และเปลี่ยน collation ให้เป็น latin1_bin หรือ latin1_general_cs ก็ใช้ได้แล้วครับ

อ้างอิง

Share

Posted in MySQL.

Tagged with , , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.

*