Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách chèn một chuỗi vào một chuỗi khác trong SQL Server bằng cách sử dụng STUFF ()

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 'Số nhận dạng nhiều phần' là gì và tại sao nó không thể bị ràng buộc?

  2. 5 mẹo hữu ích nhanh cho SQL Server Production DBAs

  3. hành vi nối nvarchar / chỉ mục / nvarchar (tối đa) không thể giải thích được

  4. SQL Server 2008 không thể đăng nhập với người dùng mới được tạo

  5. SQL Server 2016:Cải tiến OLTP trong bộ nhớ