CHAR_LENGTH() vs LENGTH()
CHAR_LENGTH() นับ จำนวนตัวอักษร (Characters) รองรับ Multi-byte (Unicode, UTF-8)
LENGTH() นับ จำนวนไบต์ (Bytes) ไม่รองรับ Multi-byte
Syntax
CHAR_LENGTH(str)
CHARACTER_LENGTH(str) -- synonym
ตัวอย่าง
mysql> SELECT CHAR_LENGTH('tutorialspoint');
+-------------------------------+
| CHAR_LENGTH('tutorialspoint') |
+-------------------------------+
| 14 |
+-------------------------------+
mysql> SELECT CHARACTER_LENGTH('tutorialspoint');
+------------------------------------+
| CHARACTER_LENGTH('tutorialspoint') |
+------------------------------------+
| 14 |
+------------------------------------+
ทดสอบกับ Unicode
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
mysql> SELECT LENGTH(@A), CHAR_LENGTH(@A);
+------------+-----------------+
| LENGTH(@A) | CHAR_LENGTH(@A) |
+------------+-----------------+
| 28 | 14 |
+------------+-----------------+
สรุป
- ใช้ CHAR_LENGTH() หรือ CHARACTER_LENGTH() สำหรับนับตัวอักษรจริง
- ใช้ LENGTH() หรือ OCTET_LENGTH() สำหรับนับไบต์ (storage size)
- ภาษาไทย/Unicode ต้องใช้ CHAR_LENGTH() เท่านั้น