Trong SQL Server, bạn có thể sử dụng T-SQL STUFF()
hàm chèn một chuỗi vào một chuỗi khác. Điều này cho phép bạn thực hiện những việc như chèn một từ tại một vị trí cụ thể. Nó cũng cho phép bạn thay thế một từ ở một vị trí cụ thể.
Đây là cú pháp chính thức:
STUFF ( character_expression , start , length , replaceWith_expression )
-
character_expression
là chuỗi gốc. Đây thực sự có thể là hằng số, biến hoặc cột của dữ liệu ký tự hoặc dữ liệu nhị phân. -
start
chỉ định vị trí bắt đầu (tức là nơi chuỗi mới sẽ được chèn vào). -
length
là số ký tự sẽ bị xóa khỏi chuỗi ban đầu. -
replaceWith_expression
là chuỗi đang được chèn.replaceWith_expression
có thể là hằng số, biến hoặc cột của ký tự hoặc dữ liệu nhị phân.
Thay thế một từ
Đây là một ví dụ mà tôi thay thế một từ trong một chuỗi.
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Kết quả:
Cats like dogs
Trong trường hợp này, tôi chỉ định rằng từ like
nên được chèn ở vị trí 6 và 3 ký tự đó sẽ bị xóa khỏi chuỗi ban đầu (điều này sẽ xóa từ and
). Vì vậy, từ and
bị xóa và từ like
được chèn.
Chèn một từ
Dưới đây là một ví dụ về cách chèn một từ mà không xóa bất kỳ thứ gì khỏi chuỗi gốc:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');
Kết quả:
Cats and big dogs
Không có gì bị xóa khỏi chuỗi gốc vì tôi đã chỉ định 0
là đối số thứ ba.
Giá trị ngoài phạm vi
Nếu vị trí bắt đầu nằm ngoài độ dài của chuỗi ban đầu, giá trị NULL được trả về.
Ví dụ:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Kết quả:
NULL
Trong trường hợp này, chuỗi gốc không dài 20 ký tự, vì vậy kết quả là NULL
.
Điều tương tự cũng xảy ra nếu bạn cung cấp 0
hoặc một số âm:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');
Kết quả:
NULL
Kết quả của những ví dụ này trái ngược với INSERT()
của MySQL , sẽ trả về chuỗi ban đầu trong trường hợp này. INSERT()
của MySQL về cơ bản hoạt động tương tự như STUFF()
của T-SQL (ngoại trừ những trường hợp như thế này).
Chèn giá trị NULL
Nếu bạn chèn giá trị NULL, kết quả của bạn sẽ chỉ xóa số ký tự đã nêu khỏi vị trí đã nêu. Nói cách khác, không có gì được chèn vào, nhưng các ký tự vẫn bị xóa như đã chỉ định.
Ví dụ:
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Kết quả:
Cats dogs
Đây là một lĩnh vực khác mà MySQL khác với T-SQL. Làm ví dụ này với INSERT()
của MySQL hàm sẽ trả về kết quả là NULL
.