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

ฟังก์ชัน CHAR_LENGTH() ใน MySQL ใช้เพื่อนับจำนวน ตัวอักษร (character) ในข้อความ โดยไม่สนใจว่าแต่ละตัวอักษรใช้กี่ไบต์ ต่างจากฟังก์ชัน LENGTH() ที่นับเป็นจำนวนไบต์ (bytes)

ประโยชน์ของ CHAR_LENGTH()

  • ใช้ตรวจสอบความยาวของข้อความในระดับตัวอักษร (เช่นชื่อ, คำอธิบาย ฯลฯ)
  • เหมาะสำหรับภาษาที่ใช้หลายไบต์ต่ออักขระ เช่น ภาษาไทย จีน ญี่ปุ่น
  • ใช้ในการตรวจสอบความยาวก่อนการแสดงผล หรือตัดคำ

Syntax (รูปแบบการใช้งาน)

CHAR_LENGTH(str)
  • str คือ ข้อความที่ต้องการนับจำนวนตัวอักษร
    • ถ้า str เป็น NULL จะคืนค่า NULL

ตัวอย่างการใช้งาน

เปรียบเทียบฟังก์ชัน CHAR_LENGTH() กับฟังก์ชัน LENGTH()

SQL
SELECT CHAR_LENGTH('ChatGPT');        -- คืนค่า: 7
SELECT CHAR_LENGTH('สวัสดี');         -- คืนค่า: 6
SELECT LENGTH('สวัสดี');              -- คืนค่า: 18 (เพราะ UTF-8 → 3 bytes/ตัว)
  • CHAR_LENGTH() นับเป็นจำนวนตัวอักษร
  • LENGTH() นับเป็นจำนวนไบต์

ตรวจสอบความยาวของชื่อภาพยนตร์

SQL
SELECT title, CHAR_LENGTH(title) AS title_length
FROM film
ORDER BY title_length DESC
LIMIT 10;
  • ดึงชื่อภาพยนตร์ (title) พร้อมจำนวนตัวอักษร
  • ใช้ ORDER BY เพื่อแสดงชื่อที่ยาวที่สุดก่อน

ค้นหาภาพยนตร์ที่ชื่อสั้นที่สุด (เช่นไม่เกิน 10 ตัวอักษร)

SQL
SELECT title
FROM film
WHERE CHAR_LENGTH(title) <= 10;

วิเคราะห์ความยาวของชื่อภาพยนตร์ตามช่วง

SQL
SELECT
  CASE
    WHEN CHAR_LENGTH(title) <= 5 THEN 'สั้นมาก'
    WHEN CHAR_LENGTH(title) <= 10 THEN 'สั้น'
    WHEN CHAR_LENGTH(title) <= 20 THEN 'ปานกลาง'
    ELSE 'ยาว'
  END AS ความยาว,
  COUNT(*) AS จำนวน
FROM film
GROUP BY ความยาว;

หมายเหตุ

  • CHAR_LENGTH() นับตัวอักษรตาม Unicode ไม่ใช่ byte
  • หากต้องการนับ byte (ใช้ตรวจสอบขนาดพื้นที่จัดเก็บจริง) ให้ใช้ LENGTH() แทน
แชร์เรื่องนี้