CHAR_LENGTH() = จำนวน ตัวอักษร (Characters)
LENGTH() = จำนวน ไบต์ (Bytes)
ตัวอย่าง ASCII (ผลเหมือนกัน)
mysql> SELECT CHAR_LENGTH('John'), LENGTH('John');
+---------------------+----------------+
| CHAR_LENGTH('John') | LENGTH('John') |
+---------------------+----------------+
| 4 | 4 |
+---------------------+
ตัวอย่าง Unicode (UTF-8: 1 Char = 3 Bytes สำหรับภาษาไทย/จีน/ญี่ปุ่น/อีโมจิ)
mysql> CREATE TABLE LengthAndCharLengthDemo (
-> FirstName VARCHAR(200),
-> SecondName VARCHAR(255) CHARACTER SET utf8mb4
-> );
mysql> INSERT INTO LengthAndCharLengthDemo VALUES ('John', 'Ritter');
ถ้า SecondName เก็บภาษาไทย 'สมชาย' (3 ตัวอักษร):
mysql> SELECT CHAR_LENGTH(FirstName), LENGTH(SecondName)
-> FROM LengthAndCharLengthDemo
-> WHERE FirstName='John' AND SecondName='สมชาย';
+------------------------+--------------------+ | CHAR_LENGTH(FirstName) | LENGTH(SecondName) | +------------------------+--------------------+ | 4 | 9 | +------------------------+--------------------+
เห็นว่า CHAR_LENGTH = 3 (ตัวอักษร) แต่ LENGTH = 9 (Bytes: 3 chars × 3 bytes)
ตารางเปรียบเทียบ
| ฟังก์ชัน | หน่วย | UTF-8 Thai | ASCII | ใช้เมื่อไหร่ |
|---|---|---|---|---|
| CHAR_LENGTH() / CHARACTER_LENGTH() | Characters | 3 | 4 | นับความยาวข้อความ (User-facing) |
| LENGTH() / OCTET_LENGTH() | Bytes | 9 | 4 | Storage Size, Network Transfer, Binary Data |
Best Practice: ใช้CHAR_LENGTH()สำหรับ Validation (เช่น "ต้องมากกว่า 5 ตัวอักษร") ใช้LENGTH()สำหรับ Storage/Buffer Calculation