Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xóa từ cụ thể trong chuỗi phân cách bởi dấu phẩy trong MySQL

MySQL hỗ trợ kiểu SET cho phép lưu nhiều giá trị trong một cột, phân cách bằng dấu phẩy. Để xóa một giá trị, dùng toán tử bitwise.

Tạo bảng kiểu SET

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

Chèn dữ liệu

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)

Xóa giá trị 'Chris' khỏi cột

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

Kết quả sau cập nhật:

+-----------+
| FirstName |
+-----------+
| John      |
| John,Adam |
| Adam      |
| John,Adam |
+-----------+
4 rows in set (0.00 sec)

Giải thích: FIND_IN_SET trả về vị trí (1-based), trừ 1 để lấy bit mask, sau đó dùng ~ (NOT bitwise) và & (AND bitwise) để xóa bit tương ứng.