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

ลบคำเฉพาะจากสตริงคั่นด้วยคอมม่าใน MySQL

ใช้ชนิดข้อมูล SET และการดำเนินการบิตเวส (bitwise) เพื่อลบค่าที่ต้องการออกจากชุดข้อมูล

สร้างตารางด้วย SET

mysql> create table DemoTable836(FirstName SET('John','Chris','Adam')); 
Query OK, 0 rows affected (0.60 sec)

เพิ่มข้อมูล

mysql> insert into DemoTable836 values('John,Chris'); Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable836 values('John,Chris,Adam'); Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable836 values('Chris,Adam'); Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable836 values('John,Adam'); Query OK, 1 row affected (0.37 sec)

แสดงข้อมูลก่อนลบ

mysql> select * from DemoTable836;
+-----------------+
| FirstName       |
+-----------------+
| John,Chris      |
| John,Chris,Adam |
| Chris,Adam      |
| John,Adam       |
+-----------------+
4 rows in set (0.00 sec)

คิวรีลบ 'Chris' ออกจากชุดข้อมูล

mysql> update DemoTable836 
set FirstName = FirstName & ~ (1 << FIND_IN_SET('Chris', FirstName) - 1); 
Query OK, 3 rows affected (0.21 sec)

ตรวจสอบผลลัพธ์

mysql> select * from DemoTable836;
+-----------+
| FirstName |
+-----------+
| John      |
| John,Adam |
| Adam      |
| John,Adam |
+-----------+
4 rows in set (0.00 sec)

คำอธิบายเทคนิค: ชนิด SET จัดเก็บข้อมูลเป็นบิตแมป (bitmap) การใช้ FIND_IN_SET หาตำแหน่ง แล้ว 1 << (pos-1) สร้างบิตมาสก์ แล้ว & ~mask เพื่อลบบิตนั้นออก