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

นับจำนวนครั้งที่สตริงเฉพาะปรากฏใน MySQL

ใช้ LENGTH() และ REPLACE() คำนวณความต่างความยาวก่อน/หลังแทนที่

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> Value TEXT
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable VALUES('10,20,10,30,10,40,50,40');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------------------------+
| Value                   |
+-------------------------+
| 10,20,10,30,10,40,50,40 |
+-------------------------+

คำสั่งนับจำนวน '10' ในสตริง (คั่นด้วยจุลภาค)

mysql> SELECT LENGTH(Value) + 2 - LENGTH(REPLACE(CONCAT(',', Value, ','), ',10,', 'len')) FROM DemoTable;

ผลลัพธ์:

+----------------------------------------------------------------------------+
| LENGTH(Value) + 2 - LENGTH(REPLACE(CONCAT(',', Value, ','), ',10,', 'len')) |
+----------------------------------------------------------------------------+
| 3                                                                          |
+----------------------------------------------------------------------------+

คำอธิบาย: CONCAT(',', Value, ') เพิ่มจุลภาคหน้า-หลัง ทำให้ '10' กลายเป็น ',10,' ทุกครั้ง | REPLACE(..., ',10,', 'len') แทนที่ ',10,' (4 ตัวอักษร) ด้วย 'len' (3 ตัวอักษร) | ความต่างความยาว = จำนวนครั้งที่เจอ | สูตร: (L + 2) - L' โดย L = LENGTH(Value), L' = LENGTH หลัง REPLACE