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

LENGTH() วัดความยาวเป็น Bytes ไม่ใช่ Characters

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