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

วิธีค้นหาแถวที่มีทศนิยมมากกว่า 2 ตำแหน่งใน MySQL

การค้นหาข้อมูลที่มีทศนิยมเกิน 2 ตำแหน่งด้วย SUBSTR() และ INSTR()

เมื่อต้องการกรองเฉพาะแถวที่มีค่าทศนิยมมากกว่า 2 ตำแหน่ง (เช่น 234.5678, 23.456) สามารถใช้ฟังก์ชัน SUBSTR() ร่วมกับ INSTR() และ LENGTH() ได้ วิธีนี้เหมาะสำหรับข้อมูลที่เก็บเป็น VARCHAR

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

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

mysql> CREATE TABLE selectRows2DecimalPlacesDemo (
    -> Amount VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.73 sec)

mysql> INSERT INTO selectRows2DecimalPlacesDemo VALUES('234.5678');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO selectRows2DecimalPlacesDemo VALUES('19.50');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO selectRows2DecimalPlacesDemo VALUES('23.456');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO selectRows2DecimalPlacesDemo VALUES('12.123');
Query OK, 1 row affected (0.14 sec)

ข้อมูลทั้งหมด:

mysql> SELECT * FROM selectRows2DecimalPlacesDemo;
+----------+
| Amount   |
+----------+
| 234.5678 |
| 19.50    |
| 23.456   |
| 12.123   |
+----------+
4 rows in set (0.00 sec)

คำสั่งค้นหาแถวที่มีทศนิยมมากกว่า 2 ตำแหน่ง:

mysql> SELECT * FROM selectRows2DecimalPlacesDemo 
    -> WHERE LENGTH(SUBSTR(Amount, INSTR(Amount, '.'))) > 3;

ผลลัพธ์ (ตัด 19.50 ออก เพราะมีทศนิยม 2 ตำแหน่งเท่านั้น):

+----------+
| Amount   |
+----------+
| 234.5678 |
| 23.456   |
| 12.123   |
+----------+
3 rows in set (0.00 sec)

คำอธิบาย

  • INSTR(Amount, '.') หาตำแหน่งของจุดทศนิยม
  • SUBSTR(Amount, ...) ดึงสตริงตั้งแต่จุดทศนิยมจนจบ (รวมจุดด้วย)
  • LENGTH(...) > 3 ตรวจสอบความยาว: จุดทศนิยม (1 ตัว) + ตัวเลขทศนิยม > 2 ตัว = ความยาว > 3

หมายเหตุ: วิธีนี้ใช้ได้กับข้อมูลที่เก็บเป็นสตริง (VARCHAR/TEXT) หากเป็นชนิดตัวเลข (DECIMAL/FLOAT) ควรใช้การเปรียบเทียบค่าทางคณิตศาสตร์แทน