Trong MySQL, bạn có thể sử dụng INSERT()
hàm chèn một chuỗi vào một chuỗi khác.
Bạn có thể thay thế các phần của chuỗi bằng một chuỗi khác (ví dụ:thay thế một từ) hoặc bạn có thể chèn nó trong khi duy trì chuỗi ban đầu (ví dụ:thêm một từ). Hàm chấp nhận 4 đối số xác định chuỗi gốc là gì, vị trí để chèn chuỗi mới, số ký tự cần xóa khỏi chuỗi gốc và chuỗi mới để chèn.
Đây là cú pháp:
INSERT(str,pos,len,newstr)
Ở đâu str
là chuỗi gốc, pos
là vị trí mà chuỗi mới sẽ được chèn, len
là số ký tự cần xóa khỏi chuỗi gốc và newstr
là chuỗi mới để chèn.
Thay thế một từ
Đây là một ví dụ mà tôi sử dụng INSERT()
để thay thế một từ trong một chuỗi:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Kết quả:
Cats like dogs
Điều này thay thế hiệu quả từ and
với từ like
. Tôi đã sử dụng 6
bởi vì từ và bắt đầu ở dấu 6 ký tự và tôi đã sử dụng 3
vì đó là số ký tự tôi muốn xóa (từ and
dài 3 ký tự).
Chèn một từ
Ở đây tôi chỉ cần chèn một từ mà không xóa bất kỳ thứ gì khỏi chuỗi gốc:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Kết quả:
Cats and big dogs
Lý do mà thao tác này không xóa bất kỳ thứ gì khỏi chuỗi ban đầu là vì tôi đã chỉ định 0
(có nghĩa là không có ký tự nào nên bị xóa).
Giá trị ngoài phạm vi
Nếu bạn chỉ định một vị trí nằm ngoài độ dài của chuỗi ban đầu, MySQL sẽ trả về chuỗi ban đầu không thay đổi.
Ví dụ:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Kết quả:
Cats and dogs
Đây là một ví dụ khác mà tôi sử dụng vị trí bắt đầu phủ định:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Kết quả:
Cats and dogs
Đây là một trong những điểm khác biệt giữa INSERT()
của MySQL chức năng và STUFF()
của Transact-SQL hàm số. Trong T-SQL, STUFF()
hàm sẽ trả về NULL
trong những trường hợp này.
Chèn giá trị NULL
Một khu vực khác mà INSERT()
của MySQL khác với STUFF()
của T-SQL là với giá trị NULL. Nếu bạn cố gắng chèn giá trị NULL, MySQL sẽ trả về NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Kết quả:
NULL