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

นับค่าที่คั่นด้วยเครื่องหมายจุลภาคในแถวที่ดึงมาจาก MySQL


คำอธิบาย

บทความนี้แสดงวิธีนับจำนวนแถวที่มีค่าเฉพาะ (เช่น '60') อยู่ในข้อความที่คั่นด้วยจุลภาค (Comma-separated values) โดยใช้ FIND_IN_SET()

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    Value varchar(100) ); 
Query OK, 0 rows affected (0.49 sec)

การเพิ่มข้อมูล

mysql> insert into DemoTable values('10,20,60,80'); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('60,70,90'); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('50,55,65,60'); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('90,98,97'); 
Query OK, 1 row affected (0.12 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;

ผลลัพธ์:

+-------------+
| Value       |
+-------------+
| 10,20,60,80 |
| 60,70,90    |
| 50,55,65,60 |
| 90,98,97    |
+-------------+
4 rows in set (0.00 sec)

คิวรี่นับแถวที่มีค่า '60'

mysql> select count(*) from DemoTable 
where find_in_set('60', Value) > 0;

ผลลัพธ์

+----------+
| count(*) |
+----------+
| 3        |
+----------+
1 row in set (0.00 sec)

คำอธิบายการทำงาน

  • FIND_IN_SET('60', Value) คืนค่าตำแหน่งของ '60' ในสตริงที่คั่นด้วยจุลภาค คืนค่า 0 ถ้าไม่พบ
  • เงื่อนไข > 0 หมายถึงพบค่าที่ต้องการ
  • นับได้ 3 แถว: แถวที่ 1, 2 และ 3 มีค่า 60 อยู่

ข้อควรระวัง

FIND_IN_SET() ทำงานกับสตริงที่คั่นด้วยจุลภาคโดยไม่มีช่องว่าง หากมีช่องว่าครอาจต้องใช้ REPLACE() ลบช่องว่างก่อน