ฟังก์ชัน LENGTH() ใน MySQL ใช้เพื่อวัดความยาวของข้อความ (string) โดยจะคืนค่าเป็น จำนวน “ไบต์ (bytes)” ที่ใช้เก็บข้อความนั้น ซึ่งต่างจากฟังก์ชัน CHAR_LENGTH() หรือ CHARACTER_LENGTH() ที่นับเป็นจำนวนตัวอักษร (characters)
- ในภาษาอังกฤษ 1 ตัวอักษร = 1 ไบต์
- แต่ในภาษาไทย หรือภาษาอื่นที่ใช้ Unicode ตัวอักษร 1 ตัว = 2-3 ไบต์ (หรือมากกว่า)
ประโยชน์ของ LENGTH()
- ใช้ตรวจสอบขนาดพื้นที่จัดเก็บข้อมูลจริงในฐานข้อมูล
- ใช้ในระบบที่มีการจำกัดความยาวข้อความตาม byte
- ใช้วิเคราะห์ประสิทธิภาพการจัดเก็บ, encode ข้อมูล, หรือระบบ import/export ที่ต้องการ byte accuracy
รูปแบบการใช้งาน
LENGTH(str)
strคือข้อความที่ต้องการวัดความยาว (เป็น string หรือ column)- ถ้าเป็น
NULLจะคืนค่าNULL
ตัวอย่างการใช้งาน
SQL
SELECT LENGTH('Hello'); -- ผลลัพธ์: 5
SELECT LENGTH('สวัสดี'); -- ผลลัพธ์: 18 (เพราะ UTF-8: 3 ไบต์/ตัว)
SELECT LENGTH('123456'); -- ผลลัพธ์: 6
SELECT LENGTH(NULL); -- ผลลัพธ์: NULLเปรียบเทียบกับ CHAR_LENGTH()
SQL
SELECT
CHAR_LENGTH('สวัสดี') AS char_len, -- ผลลัพธ์: 6
LENGTH('สวัสดี') AS byte_len; -- ผลลัพธ์: 18ตรวจสอบความยาวของชื่อภาพยนตร์ (เป็นไบต์)
SQL
SELECT title, LENGTH(title) AS byte_length
FROM film
ORDER BY byte_length DESC
LIMIT 10;- ใช้
LENGTH()เพื่อดูขนาด byte ของชื่อภาพยนตร์ - หากมีการใช้ภาษาอื่นหรือ UTF-8 อาจทำให้ byte มากกว่าจำนวนตัวอักษร
ตรวจสอบความยาวของชื่อนักแสดงที่เก็บใน first_name
SQL
SELECT actor_id, first_name, LENGTH(first_name) AS byte_length
FROM actor
WHERE LENGTH(first_name) > 10;- ใช้วัดขนาดไบต์ของชื่อ เพื่อดูว่ามีชื่อไหนเกินขนาดที่ระบบรับได้หรือไม่