1. แนวคิดพื้นฐานของฟังก์ชัน CAST
ฟังก์ชัน CAST คืออะไร
ฟังก์ชัน CAST ของ MySQL เป็นฟังก์ชัน SQL ที่ใช้สำหรับแปลงชนิดข้อมูล โดยสามารถแปลงค่าที่กำหนดให้เป็นชนิดข้อมูลอื่นได้ ตัวอย่างเช่น การแปลงสตริงเป็นจำนวนเต็ม หรือการแปลงชนิดวันที่เป็นสตริง ฟังก์ชันนี้ถูกใช้งานบ่อยครั้งเพื่อรักษาความสอดคล้องของชนิดข้อมูลในการจัดการฐานข้อมูล ถือเป็นเครื่องมือที่สะดวกและมีประโยชน์อย่างมาก
การใช้งานหลักของฟังก์ชัน CAST
ฟังก์ชัน CAST มีการใช้งานที่หลากหลาย เช่นในสถานการณ์ต่อไปนี้:
- การทำข้อมูลให้เป็นรูปแบบเดียวกัน:ใช้เพื่อทำให้ข้อมูลที่มีหลายรูปแบบเป็นมาตรฐานเดียว เช่น การทำให้รูปแบบวันที่ที่จัดเก็บในตารางมีความสอดคล้องกัน
- การแปลงชนิดข้อมูล:ใช้แปลงจำนวนเต็มเป็นสตริง หรือสตริงเป็นจำนวนเต็ม เพื่อให้การแสดงผลหรือการคำนวณมีประสิทธิภาพมากขึ้น
SELECT CAST('2023-09-22' AS DATE);
ความแตกต่างระหว่าง CAST และการแปลงชนิดข้อมูลอื่น
แม้ว่าฟังก์ชัน CAST จะคล้ายกับฟังก์ชันแปลงข้อมูลอื่นใน MySQL (เช่น CONVERT
) แต่จุดที่ต่างกันคือ CAST ปฏิบัติตามมาตรฐาน SQL และได้รับการสนับสนุนในหลายฐานข้อมูล ขณะที่ CONVERT
เป็นฟังก์ชันเฉพาะของ MySQL ที่มักใช้ในการแปลงชุดอักขระ
2. ไวยากรณ์และการใช้งานฟังก์ชัน CAST
ไวยากรณ์ของ CAST
โครงสร้างพื้นฐานของฟังก์ชัน CAST มีดังนี้:
CAST(ค่า AS ชนิดข้อมูล)
ในโครงสร้างนี้ จะระบุค่าที่ต้องการแปลงในส่วน “ค่า” และกำหนดชนิดข้อมูลเป้าหมายในส่วน “ชนิดข้อมูล”
ตัวอย่างการใช้งาน CAST
- แปลงเป็นจำนวนเต็ม (INT):ใช้เมื่อแปลงสตริงเป็นจำนวนเต็ม
SELECT CAST('123' AS SIGNED);
- แปลงเป็นสตริง (CHAR):ใช้เมื่อแปลงตัวเลขเป็นสตริง
SELECT CAST(123 AS CHAR);
การจัดการข้อผิดพลาด
เมื่อใช้ฟังก์ชัน CAST หากมีการแปลงค่าไปยังชนิดข้อมูลที่ไม่ถูกต้อง อาจเกิดข้อผิดพลาด เช่น การพยายามแปลง 'abc'
เป็นตัวเลข เพื่อป้องกันข้อผิดพลาด ควรใช้ร่วมกับฟังก์ชัน IFNULL
หรือเงื่อนไข CASE
ในการจัดการ
3. ชนิดข้อมูลที่ใช้บ่อยและตัวอย่างการแปลง
สถานการณ์ทั่วไปในการแปลงข้อมูล
ฟังก์ชัน CAST มักใช้ในการแปลงเป็นชนิดข้อมูลต่อไปนี้:
- INT:แปลงเป็นจำนวนเต็ม
- VARCHAR:แปลงตัวเลขหรือวันที่เป็นสตริง
- DATE:แปลงสตริงหรือตัวเลขเป็นชนิดวันที่
การแปลงเป็น INT
SELECT CAST('456' AS SIGNED);
ตัวอย่างนี้จะแปลงสตริง '456'
เป็นจำนวนเต็ม
การแปลงเป็น VARCHAR
SELECT CAST(456 AS CHAR);
เป็นตัวอย่างการแปลงจำนวนเต็มเป็นสตริง ใช้เมื่ออยากแสดงข้อมูลในรูปแบบที่เฉพาะเจาะจง
การแปลงเป็น DATE
SELECT CAST('2024-01-01' AS DATE);
เป็นการแปลงสตริงให้เป็นชนิดวันที่ เพื่อให้สามารถจัดเก็บและใช้งานในฟังก์ชันวันที่ได้ถูกต้อง

4. ข้อควรระวังและแนวทางที่ดีที่สุดในการใช้ CAST
ข้อควรระวัง
การใช้ CAST ควรระวังในประเด็นต่อไปนี้:
- ความเข้ากันได้ของชนิดข้อมูล:การแปลงที่ไม่ถูกต้องอาจทำให้เกิดข้อผิดพลาด ควรตรวจสอบก่อนแปลง
- การสูญเสียความแม่นยำของข้อมูล:โดยเฉพาะเมื่อแปลงค่าทศนิยม อาจทำให้ความละเอียดของข้อมูลหายไป
แนวทางที่ดีที่สุด
- ใช้ DECIMAL:หากต้องแปลงค่าทศนิยม ควรใช้ DECIMAL เพื่อป้องกันการสูญเสียความแม่นยำ
SELECT CAST(123.456 AS DECIMAL(5,2));
- การจัดการข้อผิดพลาด:หากข้อมูลมีโอกาสปะปนหลายชนิด ควรใช้
IFNULL
หรือCASE
เพื่อลดความเสี่ยง
5. ความแตกต่างระหว่าง CAST และ CONVERT
การเปรียบเทียบ CAST และ CONVERT
ทั้ง CAST และ CONVERT ใช้ในการแปลงข้อมูล แต่มีไวยากรณ์และการใช้งานที่แตกต่างกัน
- CAST:เป็นมาตรฐาน SQL ใช้กันอย่างแพร่หลาย ไวยากรณ์คือ
CAST(ค่า AS ชนิดข้อมูล)
- CONVERT:เป็นฟังก์ชันเฉพาะของ MySQL ใช้ในรูปแบบ
CONVERT(ค่า, ชนิดข้อมูล)
ตัวอย่างการใช้ CONVERT
ฟังก์ชัน CONVERT มักใช้ในการแปลงชุดอักขระ
SELECT CONVERT('abc' USING utf8);
ในตัวอย่างนี้เป็นการแปลงชุดอักขระของสตริง
ควรใช้แบบไหน?
โดยทั่วไปควรใช้ CAST เพราะเป็นมาตรฐานและใช้งานได้ในหลายฐานข้อมูล แต่หากต้องการแปลงชุดอักขระโดยเฉพาะ ควรใช้ CONVERT
6. ตัวอย่างการใช้งาน CAST ในการจัดการข้อมูลจริง
ตัวอย่างการจัดการข้อมูล
ต่อไปนี้เป็นตัวอย่างการใช้ CAST ในการจัดการข้อมูลจริง
แปลงตัวเลขเป็นสตริงแล้วเรียงลำดับ
ตัวอย่างเช่น หากต้องการแปลงตัวเลขเป็นสตริงก่อนการจัดเรียง สามารถทำได้ดังนี้
SELECT CAST(column_name AS CHAR) FROM table ORDER BY column_name;
แปลงสตริงเป็นตัวเลขแล้วกรองข้อมูล
สามารถแปลงสตริงเป็นตัวเลขแล้วเลือกเฉพาะค่าที่อยู่ในช่วงที่กำหนดได้
SELECT * FROM table WHERE CAST(column_name AS SIGNED) > 100;
7. สรุป
สรุปเนื้อหา
ฟังก์ชัน CAST เป็นเครื่องมือที่มีประโยชน์มากสำหรับการแปลงชนิดข้อมูล ช่วยให้การจัดการฐานข้อมูลมีประสิทธิภาพยิ่งขึ้น บทความนี้ได้อธิบายตั้งแต่การใช้งานพื้นฐานไปจนถึงตัวอย่างจริง ควรใช้งานโดยคำนึงถึงความเข้ากันได้ของข้อมูลและความแม่นยำ เพื่อใช้ CAST อย่างเหมาะสมที่สุด