LENGTH() = Byte Length
นับ จำนวนไบต์ ไม่ใช่จำนวนตัวอักษร ไม่ Multi-byte safe
ตัวอย่าง ASCII
mysql> SELECT LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
| 14 |
+--------------------------+
ทดสอบ Unicode (UCS2 = 2 bytes/char)
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
mysql> SELECT LENGTH(@A);
+------------+
| LENGTH(@A) |
+------------+
| 28 |
+------------+
เปรียบเทียบ CHAR_LENGTH()
mysql> SELECT CHAR_LENGTH(@A);
+-----------------+
| CHAR_LENGTH(@A) |
+-----------------+
| 14 |
+-----------------+
สรุป
| ฟังก์ชัน | นับ | Multi-byte safe | ตัวอย่าง 'ทดสอบ' (UTF-8) |
|---|---|---|---|
| LENGTH() | Bytes | ไม่ | 12 (4 ตัว × 3 bytes) |
| CHAR_LENGTH() | Characters | ใช่ | 4 |
| OCTET_LENGTH() | Bytes | ไม่ | 12 |
แนวทางเลือกใช้
- นับตัวอักษรจริง → CHAR_LENGTH()
- คำนวณ Storage size → LENGTH()
- UTF-8: 1 char = 1-4 bytes, UCS2: 1 char = 2 bytes