Hàm CONCAT trong SQL Server

3258 lượt xem

Định nghĩa và cách sử dụng

Hàm CONCAT () thêm hai hoặc nhiều chuỗi lại với nhau.

Lưu ý: Xem thêm Kết hợp với toán tử + và CONCAT_WS ().

Cú pháp

Để sử dụng hàm CONCAT trong SQL Server, bạn áp dụng cú pháp sau:

CONCAT(chuoi1, chuoi2,... chuoi_n)

Một số điểm cần lưu ý:

  • Hàm CONCAT cho phép tối đa 255 chuỗi đầu vào và yêu cầu ít nhất 2 chuỗi. Nếu chỉ có một chuỗi được cung cấp, hàm sẽ gây ra lỗi.
  • Nếu các giá trị không phải là chuỗi được truyền vào, hàm CONCAT sẽ tự động chuyển đổi chúng thành chuỗi trước khi ghép nối.
  • Khi gặp giá trị NULL, hàm CONCAT sẽ coi như đó là chuỗi rỗng với kiểu dữ liệu VARCHAR(1).
  • Hàm CONCAT chỉ khả dụng trên các phiên bản SQL Server từ 2012 trở đi, bao gồm các phiên bản 2012, 2014, 2016 và 2017.

Ví dụ

Dưới đây là một số ví dụ về hàm CONCAT trong SQL Server, được chuyển đổi sang cú pháp của GreenSQL:

SELECT CONCAT(‘greensql’, ‘.net’);
-- Kết quả: 'greensql.net'

SELECT CONCAT('green', 'sql', '.net');
-- Kết quả: 'greensql.net'

SELECT CONCAT('Green ', 'SQL ', 'Net ');
-- Kết quả: 'Green SQL Net'

-- Khi kết hợp các chuỗi với nhau, bạn có thể thêm các ký tự khoảng trắng để phân tách các giá trị được nối của mình để kết quả dễ đọc hơn.
SELECT CONCAT('Orange', ' ', 'Peach', ' ', 'Apple');
-- Kết quả: 'Orange Peach Apple'

CONCAT với các hàm và kỹ thuật khác

Hàm CONCAT trong SQL không chỉ đơn thuần là một công cụ để nối chuỗi, mà còn có thể kết hợp hiệu quả với các hàm và kỹ thuật khác để giải quyết nhiều loại vấn đề phức tạp trong quản lý và xử lý dữ liệu. Dưới đây là cách CONCAT tương tác và được bổ sung bởi các công cụ khác trong SQL

CONCAT vs CONCAT_WS

CONCAT_WS (Concatenate With Separator) là một biến thể khác của hàm CONCAT. Hàm này cho phép bạn chèn một ký tự phân cách giữa các chuỗi khi nối chúng lại với nhau. Điều này rất hữu ích khi bạn cần định dạng dữ liệu đầu ra một cách dễ đọc và rõ ràng.
Cú pháp :

CONCAT_WS(separator, string1, string2, ..., stringN);

Ví dụ, để tạo một địa chỉ hoàn chỉnh từ các cột riêng lẻ như đường, thành phố và quốc gia, sử dụng dấu phẩy làm ký tự phân cách:

CONCAT_WS(', ', street, city, country);

Khác với hàm CONCAT chỉ nối các chuỗi mà không thêm khoảng trắng hay dấu phân cách, hàm CONCAT_WS tự động chèn dấu phân cách mà bạn đã chọn giữa các chuỗi.

Sử dụng hàm CONCAT trong các hàm tổng hợp

Hàm CONCAT có thể được sử dụng để tạo chuỗi động trong các hàm tổng hợp như GROUP_CONCAT (trong MySQL) hoặc STRING_AGG (trong SQL Server). Điều này cho phép bạn kết hợp nhiều giá trị từ một nhóm thành một chuỗi duy nhất.
Ví dụ, bạn có thể tạo một danh sách các giá trị và các giá trị tương ứng của chúng, nối với nhau bằng dấu chấm phẩy, từ một nhóm các bản ghi:

GROUP_CONCAT(CONCAT(name, ‘: ‘, value) SEPARATOR ‘; ‘)

Kết hợp hàm CONCAT và CAST để xử lý các loại dữ liệu khác nhau:

Trong một số trường hợp, bạn cần nối chuỗi với các loại dữ liệu không phải là văn bản, chẳng hạn như số hoặc ngày tháng. Sử dụng hàm CAST hoặc CONVERT cùng với CONCAT giúp chuyển đổi các giá trị này thành chuỗi trước khi nối.

CONCAT('The order total is ', CAST(order_total AS VARCHAR), ' dollars.');

Trong ví dụ này, giá trị số order_total được chuyển đổi thành chuỗi trước khi nối với phần còn lại của văn bản, đảm bảo hàm CONCAT hoạt động chính xác.