Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดูช่องว่าง (Spaces) ในข้อมูล MySQL ผ่าน Command Line ด้วย QUOTE()


ปัญหา

ใน 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