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

Cách tách một chuỗi trong SQL Server

Vấn đề:

Bạn muốn tách một chuỗi trong SQL Server.

Ví dụ 1:

Bạn có một câu và bạn muốn chia nó bằng ký tự khoảng trắng.

Giải pháp 1:

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Kết quả như sau:

câu
value
An
ví dụ
.

Thảo luận:

Hàm STRING_SPLIT (chuỗi, dấu phân tách) trong SQL Server tách chuỗi trong đối số đầu tiên bằng dấu phân tách trong đối số thứ hai. Để tách một câu thành các từ, hãy chỉ định câu đó làm đối số đầu tiên của STRING_SPLIT() hàm và '' làm đối số thứ hai.

STRING_SPLIT() kết quả là một cột có tên giá trị. Để lấy từng phần của chuỗi trong một hàng riêng biệt, hãy chọn giá trị từ STRING_SPLIT(string, separator) . Ví dụ,

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Tất nhiên, bạn có thể tách một chuỗi bằng cách sử dụng một số dấu phân tách khác, ví dụ:dấu phẩy. Bạn cũng có thể đổi tên cột giống như bất kỳ cột nào khác.

Ví dụ 2:

Trong texts bảng, có một số câu.

câu
Đây là câu đầu tiên.
Và đây là cái còn lại.

Bạn muốn tách các câu bằng ký tự khoảng trắng.

Giải pháp 2:

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Kết quả như sau:

câu
value
Cái này
cái
đầu tiên
.
đây là
cái
khác
một.

Thảo luận:

Cũng giống như trong ví dụ trước, hàm STRING_SPLIT (văn bản, dấu phân tách) chia chuỗi được cung cấp làm đối số đầu tiên bởi dấu phân tách. Lần này, bạn có một vài câu để chăm sóc; những câu này được lưu trữ trong texts bàn. Đây là lý do tại sao bạn cần sử dụng ÁP DỤNG CHÉO; cụ thể hơn,

texts CROSS APPLY STRING_SPLIT(sentence, ' ')

Sử dụng nó trong FROM mệnh đề. Nó có nghĩa là phía bên phải (STRING_SPLIT(sentence, ' ') ) được áp dụng cho mỗi hàng của bảng bên trái (texts ). Đây là lý do tại sao phía bên phải có thể sử dụng các cột từ bảng bên trái (ở đây, cột câu từ texts bảng.) Đây là truy vấn bạn nhận được.

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Ví dụ 3:

Trong texts bảng, có hai cột:id và câu sentence .

câu
id
1 Đây là câu đầu tiên.
2 Và đây là cái còn lại.

Bạn muốn tách các câu theo ký tự khoảng trắng và cũng hiển thị ID của các câu.

Giải pháp 3:

SELECT
  id,
  value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Kết quả như sau:

câu
id giá trị
1 Cái này
1
1 cái
1 đầu tiên
1 .
2
2 đây là
2 cái
2 khác
2 một.

Thảo luận:

Ví dụ này rất giống, nhưng bạn cũng muốn xem id cột. Để xem cột này, chỉ cần thêm nó vào SELECT liệt kê và nhớ bao gồm dấu phẩy. Bạn sẽ thấy ID của câu cùng với các phần của câu trong kết quả. Ví dụ:câu đầu tiên được chia thành 5 phần và có ID 1 . Do đó, ID cho cả 5 phần trong bảng kết quả sẽ là 1 . Câu tiếp theo, với ID 2 , cũng được chia thành 5 phần và mỗi phần này sẽ được hiển thị bằng id = 2 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo ra một phạm vi số giữa hai số?

  2. sp_executesql chậm với các tham số

  3. Sử dụng câu lệnh UPDATE có điều kiện trong SQL

  4. Sự khác biệt giữa số, số thực và số thập phân trong SQL Server

  5. Giới thiệu tính năng mới:Nhóm luôn sẵn có