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

แปลงและอัปเดตค่าตัวเลขจากคอลัมน์สตริงเฉพาะที่เป็นตัวเลขใน MySQL

ใช้ CAST และ CEIL() เพื่อแปลงสตริงเป็นตัวเลข โดยค่าที่ไม่ใช่ตัวเลขจะกลายเป็น 0

mysql> CREATE TABLE DemoTable (
    -> Value VARCHAR(20),
    -> UpdateValue INT
    -> );
Query OK, 0 rows affected (1.08 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('100');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('false');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('true');
Query OK, 1 row affected (0.07 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('1');
Query OK, 1 row affected (0.07 sec)
mysql> SELECT * FROM DemoTable;
+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100   |        NULL |
| false |        NULL |
| true  |        NULL |
| 1     |        NULL |
+-------+-------------+
4 rows in set (0.00 sec)

อัปเดตคอลัมน์ UpdateValue โดยแปลง Value เป็นตัวเลข:

mysql> UPDATE DemoTable
    -> SET UpdateValue = CEIL(CAST(Value AS CHAR(7)));
Query OK, 4 rows affected (0.18 sec)
mysql> SELECT * FROM DemoTable;
+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100   |         100 |
| false |           0 |
| true  |           0 |
| 1     |           1 |
+-------+-------------+
4 rows in set (0.00 sec)

คำอธิบาย: CAST(Value AS CHAR) แปลงเป็นสตริงก่อน (MySQL จะพยายามแปลงเป็นตัวเลขอัตโนมัติ) CEIL() ปัดขึ้น (ไม่มีผลกับจำนวนเต็ม) ค่าที่ไม่ใช่ตัวเลข เช่น 'false' จะกลายเป็น 0