MySQL LENGTH() ฟังก์ชันจะวัดความยาวของสตริงเป็น 'ไบต์' ซึ่งหมายความว่าไม่ปลอดภัยสำหรับมัลติไบต์ ความแตกต่างของผลลัพธ์ระหว่างฟังก์ชันความปลอดภัยแบบหลายไบต์ เช่น CHAR_LENGTH() หรือ CHARACTER_LENGTH() และฟังก์ชัน LENGTH() ที่เกี่ยวข้องโดยเฉพาะกับ Unicode ซึ่งอักขระส่วนใหญ่ถูกเข้ารหัสเป็นสองไบต์หรือเกี่ยวข้องกับ UTF-8 โดยที่ จำนวนไบต์แตกต่างกันไป ตัวอย่างเช่น หากสตริงมีอักขระ 2 ไบต์สี่ตัว ฟังก์ชัน LENGTH() จะส่งกลับ 8 ตัว ในขณะที่ฟังก์ชัน CHAR_LENGTH() หรือ CHARACTER_LENGTH() จะคืนค่า 4 ตัว ซึ่งแสดงให้เห็นในตัวอย่างด้านล่าง −
ตัวอย่าง
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
ชุดผลลัพธ์ด้านบนแสดงว่าความยาวของสตริง 'tutorialspoint' คือ 14 เนื่องจากยังไม่ได้แปลงเป็นอักขระ Unicode แบบสอบถามต่อไปนี้แปลงเป็นอักขระ Unicode -
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
หลังจากแปลงสตริงใน Unicode จะให้ผลลัพธ์เป็น 28 แทนที่จะเป็น 14 เนื่องจากใน Unicode อักขระตัวเดียวจะใช้เวลา 2 ไบต์ดังที่แสดงด้านล่าง -
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
แต่ CHAR_LENGTH() ให้ผลลัพธ์เป็น 14 เนื่องจากเป็นฟังก์ชันที่ปลอดภัยแบบหลายไบต์ดังที่แสดงด้านล่าง -
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)