การนับจำนวนตัวอักษร '0' ในคอลัมน์ตัวเลข (INT)
เพื่อนับว่ามีเลข 0 กี่ตัวในค่าตัวเลขที่เก็บในคอลัมน์ INT เราสามารถแปลงเป็นสตริง แล้วใช้ LENGTH() ลบ LENGTH(REPLACE(...))
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Value INT);
Query OK, 0 rows affected (1.22 sec)
mysql> INSERT INTO DemoTable VALUES(10002000);
mysql> INSERT INTO DemoTable VALUES(00000);
mysql> INSERT INTO DemoTable VALUES(400560);
แสดงข้อมูลทั้งหมด (MySQL แสดง 00000 เป็น 0)
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+----------+
| Value |
+----------+
| 10002000 |
| 0 |
| 400560 |
+----------+
3 rows in set (0.00 sec)
คำสั่งนับจำนวนเลข 0
mysql> SELECT (LENGTH(Value) - LENGTH(REPLACE(Value, '0', ''))) AS NumberOfZeros FROM DemoTable;
ผลลัพธ์:
+---------------+
| NumberOfZeros |
+---------------+
| 6 |
| 1 |
| 3 |
+---------------+
3 rows in set (0.00 sec)
คำอธิบาย
LENGTH(Value): ความยาวของสตริงตัวเลข (MySQL แปลง INT เป็นสตริงอัตโนมัติ)REPLACE(Value, '0', ''): ลบเลข 0 ทั้งหมดออกจากสตริงLENGTH(...) - LENGTH(...): ความต่าง = จำนวนเลข 0 ที่ถูกลบ- 10002000 → '10002000' (8 ตัว) ลบ 0 ได้ '12' (2 ตัว) → 8-2=6
- 0 → '0' (1 ตัว) ลบ 0 ได้ '' (0 ตัว) → 1-0=1
- 400560 → '400560' (6 ตัว) ลบ 0 ได้ '456' (3 ตัว) → 6-3=3
- หมายเหตุ: ค่า 00000 ถูกเก็บเป็น 0 (INT) จึงนับได้ 1 ตัวเท่านั้น