Hàm thao tác trên nhóm chuỗi

Các hàm thao tác dữ liệu trong SQL Server

Ana Voicu

Data Engineer

CONCAT() và CONCAT_WS()

CONCAT(string1, string2 [, stringN ])

CONCAT_WS(separator, string1, string2 [, stringN ])

Lưu ý: nối dữ liệu bằng hàm tốt hơn dùng toán tử "+".

Các hàm thao tác dữ liệu trong SQL Server

Ví dụ CONCAT() và CONCAT_WS()

SELECT 
    CONCAT('Apples', 'and', 'oranges') AS result_concat,
    CONCAT_WS(' ', 'Apples', 'and', 'oranges') AS result_concat_ws,
    CONCAT_WS('***', 'Apples', 'and', 'oranges') AS result_concat_ws2;
| result_concat    | result_concat_ws   | result_concat_ws2      |
|------------------|--------------------|------------------------|
| Applesandoranges | Apples and oranges | Apples***and***oranges |
Các hàm thao tác dữ liệu trong SQL Server

STRING_AGG()

STRING_AGG(expression, separator) [ <order_clause> ]

  • Nối các giá trị chuỗi và chèn ký tự phân tách giữa chúng.
Các hàm thao tác dữ liệu trong SQL Server

Ví dụ STRING_AGG()

SELECT 
    STRING_AGG(first_name, ',') AS list_of_names
FROM voters;
| list_of_names                            |
|------------------------------------------|
| Carol,Ana,Melissa,Angela,Grace,Melody... |
SELECT 
    STRING_AGG(CONCAT(first_name, ' ', last_name, ' (', first_vote_date, ')'), CHAR(13))  AS list_of_names
FROM voters;
| list_of_names                    |
|----------------------------------|
| Carol Rai (2015-03-09)           |
| Ana Price (2015-01-17) ...       |
Các hàm thao tác dữ liệu trong SQL Server

STRING_AGG() với GROUP BY

SELECT 
    YEAR(first_vote_date) AS voting_year,
    STRING_AGG(first_name, ', ') AS voters
FROM voters
GROUP BY YEAR(first_vote_date);
| voting_year | voters                           |
|-------------|----------------------------------|
| 2013        | Melody, Clinton, Kaylee,...      |
| 2014        | Brett, Joe, April, Mackenzie,... |
| 2015        | Cedric, Julie, Sandra,...        |
| 2016        | Isabella, Vincent, Haley,...     |
Các hàm thao tác dữ liệu trong SQL Server

STRING_AGG() với <order_clause> tùy chọn

SELECT 
    YEAR(first_vote_date) AS voting_year,
    STRING_AGG(first_name, ', ') WITHIN GROUP (ORDER BY first_name ASC) AS voters
FROM voters
GROUP BY YEAR(first_vote_date);
| voting_year | voters                         |
|-------------|--------------------------------|
| 2013        | Amanda, Anthony, Caroline,...  |
| 2014        | April, Brett, Bruce, Carl, ... |
| 2015        | Abigail, Alberto, Alexa,...    |
| 2016        | Barbara, Haley, Isabella,...   |
Các hàm thao tác dữ liệu trong SQL Server

STRING_SPLIT()

STRING_SPLIT(string, separator)

  • Tách chuỗi thành các phần dựa trên ký tự phân tách.
  • Trả về một bảng một cột.
SELECT * 
FROM STRING_SPLIT('1,2,3,4', ',')
| value |
|-------|
| 1     | 
| 2     | 
| 3     | 
| 4     | 
Các hàm thao tác dữ liệu trong SQL Server

Ayo berlatih!

Các hàm thao tác dữ liệu trong SQL Server

Preparing Video For Download...