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

แปลงค่าหนึ่งเป็น DECIMAL แล้วหารกับอีกค่าหนึ่งใน MySQL

เมื่อทำการหารระหว่างคอลัมน์ Integer ใน MySQL ผลลัพธ์จะเป็น Integer (ตัดทศนิยม) หากต้องการผลลัพธ์ทศนิยมแม่นยำ ให้ CAST ค่าหนึ่งเป็น DECIMAL ก่อนหาร

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

สร้างตารางและเพิ่มข้อมูล:

mysql> create table DemoTable1352 (Value1 int, Value2 int);
mysql> insert into DemoTable1352 values(10,30),(40,60),(110,130);

ข้อมูล:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | 30     |
| 40     | 60     |
| 110    | 130    |
+--------+--------+

คำสั่ง CAST Value1 เป็น DECIMAL แล้วหาร Value2

mysql> select cast(Value1 as DECIMAL(18,14)) / Value2 from DemoTable1352;

ผลลัพธ์ (ทศนิยมแม่นยำ)

+-----------------------------------------+
| cast(Value1 as DECIMAL(18,14)) / Value2 |
+-----------------------------------------+
| 0.333333333333333333                    |
| 0.666666666666666666                    |
| 0.846153846153846153                    |
+-----------------------------------------+

คำอธิบาย:

  • CAST(Value1 AS DECIMAL(18,14)) แปลง Integer เป็น Decimal ความแม่นยำ 14 ตำแหน่ง
  • การหาร DECIMAL / INT ให้ผลลัพธ์เป็น DECIMAL (เก็บทศนิยมได้)
  • หากไม่ CAST: 10/30 = 0 (Integer division ในบาง Mode) หรือ 0.33 (ถ้า SQL Mode ไม่ strict)
  • สามารถใช้ Value1 * 1.0 / Value2 หรือ Value1 / Value2 * 1.0 ทำให้เป็น Floating point ได้อีกวิธี
  • DECIMAL(precision, scale) precision=รวมทุกหลัก, scale=หลักทศนิยม