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

CHAR_LENGTH() วัดความยาวตัวอักษร ไม่ใช่ไบต์ sinonim CHARACTER_LENGTH()

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() เท่านั้น