ฟังก์ชัน CAST() ใน MySQL ใช้สำหรับแปลงค่าจากชนิดข้อมูลหนึ่งไปเป็นอีกชนิดข้อมูลหนึ่ง เช่น แปลงจาก STRING เป็น DATE, FLOAT เป็น CHAR, หรือ DECIMAL เป็น SIGNED
จุดประสงค์ของการใช้งาน CAST() คือเพื่อควบคุมรูปแบบของข้อมูลที่ใช้ในคำสั่ง SQL ให้เหมาะสมกับประเภทข้อมูลที่ต้องการใช้งาน เช่น การจัดรูปแบบผลลัพธ์ การคำนวณ หรือการจัดเรียงข้อมูล
ประโยชน์ของฟังก์ชัน CAST()
- แปลงข้อมูลให้อยู่ในชนิดที่เหมาะสมกับการประมวลผลหรือแสดงผล
- ใช้ควบคุมชนิดข้อมูลที่ส่งคืนใน
SELECT,WHERE,ORDER BY,JOINฯลฯ - ใช้ร่วมกับฟังก์ชันอื่น เช่น
CONCAT(),DATE_FORMAT() - ใช้แปลงค่าจาก
DATETIMEเป็นDATEหรือจากDECIMALเป็นSIGNED - ป้องกัน error จากการเปรียบเทียบข้อมูลคนละประเภท
รูปแบบการใช้งาน
CAST(expression AS data_type)
expressionคือค่าหรือคอลัมน์ที่ต้องการแปลงdata_typeคือชนิดข้อมูลที่ต้องการแปลงไป เช่นCHAR,DATE,DECIMAL,SIGNED,UNSIGNED
ตัวอย่างการใช้งาน
แปลงตัวเลขเป็นข้อความ
SQL
SELECT CAST(123 AS CHAR) AS str_value;
-- ผลลัพธ์: '123'แปลงวันที่เป็นข้อความ
SQL
SELECT CAST(NOW() AS CHAR) AS datetime_str;แปลงจำนวนทศนิยมเป็นจำนวนเต็ม
SQL
SELECT CAST(45.78 AS SIGNED) AS int_value;
-- ผลลัพธ์: 45ตัวอย่างการประยุกต์ใช้งาน
สมมติว่ามีตารางชื่อ payments ซึ่งมีข้อมูลดังนี้
| payment_id | payment_date | amount |
|---|---|---|
| 1 | 2024-04-01 09:00:00 | 1200.50 |
| 2 | 2024-04-02 10:15:00 | 850.75 |
| 3 | 2024-04-03 14:20:00 | 1500.00 |
แปลง payment_date เป็น DATE และ amount เป็นข้อความ
SQL
SELECT payment_id,
CAST(payment_date AS DATE) AS pay_date,
CAST(amount AS CHAR) AS amount_text
FROM payments;หมายเหตุ
CAST()รองรับเฉพาะชนิดข้อมูลบางประเภทเท่านั้น เช่นCHAR,SIGNED,UNSIGNED,DATE,DATETIME,DECIMAL- หากข้อมูลไม่สามารถแปลงได้ ผลลัพธ์จะเป็น
NULL - การแปลงเป็น
CHARจะไม่สามารถใช้ในคำนวณได้ ต้องแปลงกลับก่อน CAST()อาจมีผลกับการจัดเรียง (ORDER BY) โดยเฉพาะเมื่อแปลงค่าตัวเลขเป็นข้อความ- หากต้องการควบคุมรูปแบบการแสดงผล (เช่น ทศนิยม) ควรใช้ร่วมกับ
FORMAT()หรือROUND()