เมื่อทำการหารระหว่างคอลัมน์ 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=หลักทศนิยม