ปัญหา
ใน command line client ข้อมูลที่เป็น space หรือ empty string แสดงเหมือนกัน (ดูไม่ต่างกัน)
วิธีแก้: ใช้ QUOTE()
QUOTE() คืนค่า string ในรูปแบบที่เห็นค่าจริง (มี quote ครอบ escape special chars)
รูปแบบคำสั่ง
SELECT yourColumnName, QUOTE(yourColumnName) FROM yourTableName;
ตัวอย่างครบถ้วน
1. สร้างตาราง
mysql> create table seeSpacesDemo
-> (
-> spaceValue varchar(10)
-> );
Query OK, 0 rows affected (0.42 sec)
2. เพิ่มข้อมูล: empty, 1 space, 2 spaces, 3 spaces
mysql> insert into seeSpacesDemo values('');
Query OK, 1 row affected (0.70 sec)
mysql> insert into seeSpacesDemo values(' ');
Query OK, 1 row affected (0.45 sec)
mysql> insert into seeSpacesDemo values(' ');
Query OK, 1 row affected (0.21 sec)
mysql> insert into seeSpacesDemo values(' ');
Query OK, 1 row affected (0.16 sec)
3. SELECT ปกติ - ดูเหมือนกันหมด
mysql> select * from seeSpacesDemo;
+------------+ | spaceValue | +------------+ | | | | | | | | +------------+
4. ใช้ QUOTE() - มองเห็นความต่างชัดเจน
mysql> select spaceValue, quote(spaceValue) from seeSpacesDemo;
+------------+-------------------+ | spaceValue | quote(spaceValue) | +------------+-------------------+ | | '' | | | ' ' | | | ' ' | | | ' ' | +------------+-------------------+
QUOTE() ทำอะไรบ้าง
- ห่อ string ด้วย single quote
- Escape single quote → \'
- Escape backslash → \\
- Escape control chars (\n, \t, \r, \0) → \n, \t, \r, \0
- NULL → คืนคำว่า NULL (ไม่มี quote)
ตัวอย่าง QUOTE กับค่าพิเศษ
SELECT QUOTE("It's a test"); -- 'It\'s a test'
SELECT QUOTE('path\\to\\file'); -- 'path\\to\\file'
SELECT QUOTE('line1\nline2'); -- 'line1\nline2'
SELECT QUOTE(NULL); -- NULL
วิธีอื่น: ใช้ HEX() หรือ LENGTH()
SELECT spaceValue, HEX(spaceValue), LENGTH(spaceValue), CHAR_LENGTH(spaceValue) FROM seeSpacesDemo;
+------------+----------------+------------------+---------------------+ | spaceValue | HEX(spaceValue) | LENGTH(spaceValue) | CHAR_LENGTH(spaceValue) | +------------+----------------+------------------+---------------------+ | | | 0 | 0 | | | 20 | 1 | 1 | | | 2020 | 2 | 2 | | | 202020 | 3 | 3 | +------------+----------------+------------------+---------------------+
สรุป: QUOTE() ช่วย visualize hidden characters ได้ดีที่สุดใน command line