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

นับจำนวนเลข 0 ในคอลัมน์ INT ใน MySQL ด้วย LENGTH และ REPLACE

การนับจำนวนตัวอักษร '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 ตัวเท่านั้น