นับอักขระเฉพาะ (Comma) ในสตริง: สูตร LENGTH - LENGTH(REPLACE)
หลักการ: ความยาวเดิม - ความยาวหลังลบ Comma ออก = จำนวน Comma
ไวยากรณ์
SELECT LENGTH(column) - LENGTH(REPLACE(column, ',', '')) AS comma_count FROM table;
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1510 (Value VARCHAR(50));
Query OK, 0 rows affected (6.75 sec)
mysql> INSERT INTO DemoTable1510 VALUES
-> ('20,35'), ('45,67,89'), ('90,97,101,190');
Query OK, 3 rows affected
ข้อมูลทั้งหมด
+---------------+ | Value | +---------------+ | 20,35 | | 45,67,89 | | 90,97,101,190 | +---------------+
คำสั่งนับ Comma
mysql> SELECT LENGTH(Value) - LENGTH(REPLACE(Value, ',', '')) AS NumberOfComma
-> FROM DemoTable1510;
ผลลัพธ์
+---------------+ | NumberOfComma | +---------------+ | 1 | | 2 | | 3 | +---------------+
การคำนวณยืนยัน
| Value | LENGTH | REPLACE(',', '') | LENGTH หลัง Replace | ผลต่าง |
|---|---|---|---|---|
| 20,35 | 5 | 2035 | 4 | 1 |
| 45,67,89 | 8 | 456789 | 6 | 2 |
| 90,97,101,190 | 13 | 9097101190 | 10 | 3 |
ประยุกต์ใช้: นับจำนวน Item ใน Comma-Separated List
SELECT
Value,
LENGTH(Value) - LENGTH(REPLACE(Value, ',', '')) + 1 AS item_count
FROM DemoTable1510;
ผลลัพธ์ (Item Count = Comma + 1)
+---------------+------------+ | Value | item_count | +---------------+------------+ | 20,35 | 2 | | 45,67,89 | 3 | | 90,97,101,190 | 4 | +---------------+------------+
⚠️ ข้อควรระวัง
- ทำงานกับ
CHAR,VARCHAR,TEXTได้ LENGTH()นับเป็น Byte (UTF-8 ตัวอักษรไทย = 3 Bytes) → ใช้CHAR_LENGTH()หากนับตัวอักษร- สำหรับ Comma (ASCII 1 Byte) ใช้ LENGTH ได้ถูกต้อง
- หากข้อมูลมี Comcha ท้าย (Trailing) เช่น 'a,b,' → นับได้ 2 Comma = 3 Items (Item ท้ายว่าง)
MySQL 8.0: ใช้ REGEXP_COUNT (ถ้ามี)
-- MySQL 8.0 ไม่มี REGEXP_COUNT ต้องใช้ UDF หรือ workaround นี้ต่อไป