Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: การใช้ฟังก์ชัน CAST() ในคำสั่ง SELECT

การแปลงชนิดข้อมูลด้วย CAST() ใน MySQL

ฟังก์ชัน CAST(expression AS type) แปลงค่าจากชนิดหนึ่งไปอีกชนิดหนึ่ง ใน SELECT ใช้ได้ทั้งเพื่อแสดงผล แปลงชนิดเพื่อคำนวณ หรือจัดรูปแบบ

ตัวอย่างการใช้งาน

สร้างตารางวันที่จัดส่ง:

mysql> CREATE TABLE castFunctionDemo (
    -> ShippingDate DATE
    -> );
Query OK, 0 rows affected (0.74 sec)

mysql> INSERT INTO castFunctionDemo VALUES('2019-01-31'),('2018-07-12'),('2016-12-06'),('2017-08-25');
Query OK, 4 rows affected (0.18 sec)

ข้อมูลต้นฉบับ (DATE):

mysql> SELECT * FROM castFunctionDemo;
+--------------+
| ShippingDate |
+--------------+
| 2019-01-31   |
| 2018-07-12   |
| 2016-12-06   |
| 2017-08-25   |
+--------------+
4 rows in set (0.00 sec)

แปลง DATE → CHAR(12) (สตริงความยาว 12):

mysql> SELECT CAST(ShippingDate AS CHAR(12)) AS Conversion FROM castFunctionDemo;
+------------+
| Conversion |
+------------+
| 2019-01-31 |
| 2018-07-12 |
| 2016-12-06 |
| 2017-08-25 |
+------------+
4 rows in set (0.00 sec)

ชนิดข้อมูล (Type) ที่รองรับใน CAST

Typeคำอธิบาย
BINARY[(N)]Binary string (VARBINARY)
CHAR[(N)]Fixed-length string
DATEDate (YYYY-MM-DD)
DATETIMEDate & Time
DECIMAL[(M[,D])]Exact numeric
JSONJSON document (MySQL 5.7+)
SIGNED [INTEGER]Signed integer
TIMETime (HH:MM:SS)
UNSIGNED [INTEGER]Unsigned integer

ตัวอย่างเพิ่มเติม

-- String to Number
SELECT CAST('123' AS UNSIGNED);     -- 123
SELECT CAST('-45' AS SIGNED);       -- -45

-- Number to String
SELECT CAST(123 AS CHAR);           -- '123'

-- Date String to Date
SELECT CAST('2023-12-31' AS DATE);  -- 2023-12-31

-- Decimal precision
SELECT CAST(10.5678 AS DECIMAL(10,2)); -- 10.57

คำอธิบาย

  • CAST(... AS CHAR(N)) จะตัดหรือเติม Space ให้ยาว N ตัวอักษร
  • ต่างจาก CONVERT() ที่รองรับ USING charset (เช่น CONVERT(str USING utf8mb4))
  • ใน WHERE/ORDER BY การ CAST สามารถช่วยให้ Index ทำงานได้หรือไม่ทำงานได้ ขึ้นกับชนิดและการใช้งาน