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

Cast VARCHAR เป็น INT ใน MySQL (CAST / CONVERT)

ใช้ 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

TypeRangeใช้เมื่อไหร่
UNSIGNED / UNSIGNED INTEGER0 to 4,294,967,295Positive 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