ใช้ 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