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

ฟังก์ชัน 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
12024-04-01 09:00:001200.50
22024-04-02 10:15:00850.75
32024-04-03 14:20:001500.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()
แชร์เรื่องนี้