ใช้ CAST(value AS UNSIGNED) หรือ CONVERT(value, UNSIGNED)
สร้างตารางและข้อมูล
mysql> CREATE TABLE VarcharToIntDemo (Value VARCHAR(100));
mysql> INSERT INTO VarcharToIntDemo VALUES ('123'), ('234');
CAST Syntax
CAST(expression AS type) CONVERT(expression, type)
Query Cast
mysql> SELECT CAST(Value AS UNSIGNED) FROM VarcharToIntDemo; mysql> SELECT CONVERT(Value, UNSIGNED) FROM VarcharToIntDemo;
ผลลัพธ์:
+-------------------------+ | CAST(Value AS UNSIGNED) | +-------------------------+ | 123 | | 234 | +-------------------------+
Type Options
| Type | Range | ใช้เมื่อไหร่ |
|---|---|---|
UNSIGNED / UNSIGNED INTEGER | 0 to 4,294,967,295 | Positive Only (Default) |
SIGNED / SIGNED INTEGER | -2,147,483,648 to 2,147,483,647 | มีค่าลบ |
BIGINT | ±9.22×10¹⁸ | ตัวเลขใหญ่มาก |
DECIMAL(M,D) | Exact Decimal | ต้องการทศนิยมแม่นยำ |
พฤติกรรมกับค่าที่ไม่ใช่ตัวเลข
mysql> SELECT CAST('abc' AS UNSIGNED); -- 0 (Warning)
mysql> SELECT CAST('123abc' AS UNSIGNED); -- 123 (Warning: Truncated)
mysql> SELECT CAST('12.34' AS UNSIGNED); -- 12 (Truncate Decimal)
แนะนำ: Validate ด้วย REGEXP ก่อน CAST: WHERE Value REGEXP '^[0-9]+$' เพื่อป้องกัน Silent Truncation