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:
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:
value |
---|
Cái này |
là |
cái |
đầu tiên |
. |
Và |
đâ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
.
id | câu|
---|---|
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:
id | giá trị |
---|---|
1 | Cái này |
1 | là |
1 | cái |
1 | đầu tiên |
1 | câu. |
2 | Và |
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
.