MySQL การใช้งานฟังก์ชัน LENGTH()

ฟังก์ชัน 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;
  • ใช้วัดขนาดไบต์ของชื่อ เพื่อดูว่ามีชื่อไหนเกินขนาดที่ระบบรับได้หรือไม่
แชร์เรื่องนี้