ฟังก์ชัน 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()แทน