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

แปลง VARCHAR เป็น DOUBLE ใน MySQL ด้วยการบวก 0.0 (Type Casting)

การแปลงชนิดข้อมูล String (VARCHAR) ให้เป็นตัวเลข (DOUBLE)

วิธีง่ายที่สุดใน MySQL: **บวก 0.0** เข้าไป (col + 0.0) MySQL จะแปลง String เป็น Number อัตโนมัติ (Implicit Cast)

Syntax

SELECT column_name + 0.0 AS numeric_alias FROM table_name;

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

สร้างตารางเก็บตัวเลขเป็น VARCHAR:

mysql> CREATE TABLE DemoTable731 (Value VARCHAR(100));
Query OK, 0 rows affected (0.50 sec)

mysql> INSERT INTO DemoTable731 VALUES ('4.50'), ('7.83'), ('8.91'), ('560.34');
Query OK, 4 rows affected

ข้อมูลต้นฉบับ (ชนิด VARCHAR):

mysql> SELECT * FROM DemoTable731;
+--------+
| Value  |
+--------+
| 4.50   |
| 7.83   |
| 8.91   |
| 560.34 |
+--------+
4 rows in set (0.00 sec)

แปลงเป็นตัวเลข (DOUBLE) ด้วย + 0.0:

mysql> SELECT Value + 0.0 AS demo FROM DemoTable731;
+-----------+
| demo      |
+-----------+
| 4.5       |
| 7.83      |
| 8.91      |
| 560.34    |
+-----------+
4 rows in set (0.28 sec)

วิธีแปลงชนิดข้อมูลอื่นๆ

ข้อควรระวัง

  • ค่าที่ไม่ใช่ตัวเลข (เช่น 'abc') จะกลายเป็น 0 พร้อม Warning
  • ค่าที่มี Comma: '1,000.50' + 0.0 = 1 (หยุดที่ Comma) → ใช้ REPLACE(col, ',', '') + 0.0
  • Scientific Notation: '1.5e2' + 0.0 = 150 (รองรับ)
  • สำหรับเงิน/การเงิน ควรใช้ DECIMAL ไม่ใช่ DOUBLE (Precision Issue)

เปลี่ยนชนิดคอลัมน์ถาวร (ALTER TABLE)

ALTER TABLE DemoTable731 MODIFY Value DECIMAL(10,2);
วิธีSyntaxคำอธิบาย
Implicit Castcol + 0 หรือ col * 1ง่ายที่สุด แปลงเป็น DOUBLE
CASTCAST(col AS DECIMAL(10,2))มาตรฐาน SQL ระบุ Precision ได้
CONVERTCONVERT(col, DECIMAL(10,2))มาตรฐาน ODBC
DECIMAL()DECIMAL(col, 10, 2)ฟังก์ชัน MySQL เฉพาะ