Sử dụng hàm INSERT() trong MySQL để thay thế chuỗi con
MySQL không có hàm substr_replace() như PHP, nhưng cung cấp hàm INSERT(str, pos, len, newstr) có chức năng tương tự: thay thế len ký tự bắt đầu từ vị trí pos trong chuỗi str bằng chuỗi newstr.
Cú pháp
INSERT(str, pos, len, newstr)
- str: Chuỗi gốc
- pos: Vị trí bắt đầu thay thế (bắt đầu từ 1)
- len: Số ký tự sẽ bị thay thế
- newstr: Chuỗi thay thế
Trả về chuỗi gốc nếu pos vượt quá độ dài chuỗi. Trả về NULL nếu bất kỳ tham số nào là NULL.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
Password VARCHAR(50)
);
mysql> INSERT INTO DemoTable VALUES ('76367_____8793443');
mysql> INSERT INTO DemoTable VALUES ('12345_____9899984322');
mysql> INSERT INTO DemoTable VALUES ('99999_____4747747432');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
Kết quả:
+----------------------+ | Password | +----------------------+ | 76367_____8793443 | | 12345_____9899984322 | | 99999_____4747747432 | +----------------------+
3. Truy vấn thay thế 6 ký tự từ vị trí 5 bằng 'PPPPPP'
mysql> SELECT INSERT(Password, 5, LENGTH('PPPPPP'), 'PPPPPP') FROM DemoTable;
4. Kết quả
+----------------------------------------------+
| INSERT(Password,5,LENGTH('PPPPPP'),'PPPPPP') |
+----------------------------------------------+
| 7636PPPPPP8793443 |
| 1234PPPPPP9899984322 |
| 9999PPPPPP4747747432 |
+----------------------------------------------+
Giải thích: Vị trí 5 là ký tự cuối cùng của tiền tố (7, 5, 9). Hàm thay thế 6 ký tự gạch dưới (_) bằng 'PPPPPP'. Hàm LENGTH('PPPPPP') trả về 6.