Site icon PlusMagi's Blog By Pitt Phunsanit

SQL Server: CAST และ CONVERT

ใน SQL Server ทั้ง CAST และ CONVERT มีหน้าที่หลักเหมือนกันคือ การแปลงชนิดของข้อมูล (Data Type) จากชนิดหนึ่งไปเป็นอีกชนิดหนึ่ง (เช่น แปลงตัวเลขเป็นข้อความ หรือแปลงวันที่เป็นข้อความ)
แต่ทั้งสองคำสั่งนี้มีจุดที่แตกต่างกันสำคัญ ๆ รวมถึงเรื่องอย่าง performance และ portability

คุณสมบัติCASTCONVERT
มาตรฐานเป็นมาตรฐาน ANSI SQL (ใช้ได้กับฐานข้อมูลอื่นด้วย)เป็นคำสั่งเฉพาะของ SQL Server (T-SQL)
การจัดรูปแบบ (Formatting)ทำไม่ได้ (แปลงแบบพื้นฐานเท่านั้น)ทำได้ดีมาก (โดยเฉพาะกับ Date/Time)
ไวยากรณ์ (Syntax)จำง่าย ตรงไปตรงมาซับซ้อนกว่าเล็กน้อย มี parameters เพิ่ม
ประสิทธิภาพใกล้เคียงกันมากใกล้เคียงกันมาก

CAST (มาตรฐานสากล)

CAST เป็นคำสั่งที่เป็นมาตรฐาน ANSI หมายความว่าถ้าคุณเขียน Query นี้ แล้ววันหนึ่งต้องย้ายไปใช้ฐานข้อมูลอื่น (เช่น MySQL, PostgreSQL, Oracle) คุณมักจะใช้ไวยากรณ์เดิมได้โดยไม่ต้องแก้โค้ด

ตัวอย่าง:
— แปลงตัวเลข 123.45 เป็นจำนวนเต็ม (Integer)
SELECT CAST(123.45 AS INT);
— ผลลัพธ์: 123


CONVERT (เก่งเรื่อง Format)

CONVERT เป็นฟังก์ชันเฉพาะของ SQL Server มีความยืดหยุ่นสูงกว่า เพราะมี parameter ตัวที่ 3 ที่เรียกว่า Style ซึ่งช่วยกำหนดรูปแบบการแสดงผลได้ โดยเฉพาะเรื่อง วันที่ (Date)

ตัวอย่าง:
— แปลงวันที่ปัจจุบัน เป็นข้อความ โดยระบุ Style 103 (British/French standard)
SELECT CONVERT(VARCHAR, GETDATE(), 103);
— ผลลัพธ์: 08/01/2026 (รูปแบบ dd/mm/yyyy)
— ถ้าใช้ CAST จะเลือก Format ไม่ได้ (จะได้ค่า Default)
SELECT CAST(GETDATE() AS VARCHAR);
— ผลลัพธ์: Jan 8 2026 12:09AM


สรุป: ควรใช้อันไหนดี?

ข้อควรระวัง: ทั้งคู่จะ Error หากข้อมูลนั้นแปลงไม่ได้จริง (เช่น พยายามแปลงคำว่า “Hello” เป็นตัวเลข) หากต้องการป้องกัน Error แนะนำให้ลองศึกษา TRY_CAST หรือ TRY_CONVERT ซึ่งจะคืนค่าเป็น NULL แทน Error ครับ


อ่านเพิ่มเติม

Exit mobile version