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

นับจำนวนสัญลักษณ์เฉพาะในแถว MySQL

การนับจำนวนตัวอักษร/สัญลักษณ์เฉพาะในสตริง MySQL

ใช้สูตร: LENGTH(str) - LENGTH(REPLACE(str, 'target', '')) | ตรรกะ: ความยาวเดิม - ความยาวหลังลบตัวอักษรเป้าหมายออก = จำนวนครั้งที่เจอ

SELECT LENGTH(yourColumn) - LENGTH(REPLACE(yourColumn, 'targetChar', '')) FROM yourTable;

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูลมีเครื่องหมาย ?:

mysql> create table DemoTable (Value varchar(200));
mysql> insert into DemoTable values('?1234?6789?5656?324?');

ข้อมูล: ?1234?6789?5656?324?

คิวรีนับจำนวน ?:

mysql> SELECT LENGTH(Value) - LENGTH(REPLACE(Value, '?', '')) from DemoTable;
+-----------------------------------------------+
| LENGTH(Value) - LENGTH(REPLACE(Value, '?', '')) |
+-----------------------------------------------+
| 5                                             |
+-----------------------------------------------+

การตรวจสอบ: สตริง ?1234?6789?5656?324? มี ? อยู่ 5 ตำแหน่ง (หน้า 1234, หน้า 6789, หน้า 5656, หน้า 324, ท้ายสุด)

ข้อควรระวัง:

  • LENGTH() นับเป็น **Byte** | CHAR_LENGTH() นับเป็น **Character** | สำหรับ ASCII (1 byte/char) ให้ผลลัพธ์เท่ากัน | สำหรับ UTF-8 ต้องใช้ CHAR_LENGTH() แทน
  • หาก Target เป็น Multi-byte character ให้ใช้ CHAR_LENGTH() ทั้งคู่

การประยุกต์: นับหลายตัวอักษรพร้อมกัน (เช่น นับสระ a,e,i,o,u) ต้องทำซ้ำหรือใช้ REGEXP (MySQL 8.0+)