Khi xem dữ liệu trong command line client, khoảng trắng (space, tab, newline) ở đầu/cuối/giữa chuỗi không hiển thị được. Dùng hàm QUOTE() để thấy rõ.
Cú pháp
SELECT tên_cột, QUOTE(tên_cột) FROM tên_bảng;
Ví dụ minh họa
Tạo bảng demo:
mysql> CREATE TABLE seeSpacesDemo (
-> spaceValue VARCHAR(10)
-> );
Query OK, 0 rows affected (0.42 sec)
Chèn các giá trị khoảng trắng khác nhau:
mysql> INSERT INTO seeSpacesDemo VALUES (''), (' '), (' '), (' ');
Xem thường (trông giống hệt nhau):
mysql> SELECT * FROM seeSpacesDemo;
+------------+ | spaceValue | +------------+ | | | | | | | | +------------+
Dùng QUOTE() để thấy rõ:
mysql> SELECT spaceValue, QUOTE(spaceValue) FROM seeSpacesDemo;
+------------+-------------------+ | spaceValue | QUOTE(spaceValue) | +------------+-------------------+ | | '' | | | ' ' | | | ' ' | | | ' ' | +------------+-------------------+
Giải thích QUOTE()
- Bọc chuỗi trong dấu nháy đơn
' - Escape các ký tự đặc biệt:
\',\\,\n,\t,\0 - NULL → từ
NULL(không có dấu nháy) - Chuỗi rỗng →
''
So sánh với các hàm khác
| Hàm | Kết quả cho ' a ' | Dùng cho |
|---|---|---|
| QUOTE() | ' a ' | Debug, export SQL an toàn |
| HEX() | 206120 | Xem mã hex từng byte |
| LENGTH() | 3 | Đếm byte |
| CHAR_LENGTH() | 3 | Đếm ký tự |
Ứng dụng thực tế
- Debug dữ liệu "sạch" nhưng không JOIN được do khoảng trắng ẩn
- Kiểm tra import CSV/Excel có ký tự lạ
- So sánh chuỗi an toàn:
WHERE QUOTE(col1) = QUOTE(col2)
Mẹo: TRIM() chỉ xóa khoảng trắng đầu/cuối. Dùng REPLACE(col, ' ', '') để xóa tất cả space.