Trong SQL Server, có một số cách để nối các cột thành một chuỗi. Dưới đây là một số phương pháp để nối các cột dựa trên phiên bản SQL Server
Trong SQL Server 2017 trở lên
Nếu bạn có SQL Server 2017 trở lên, sử dụng CONCAT_WS[] là cách tốt nhất để nối nhiều cột thành một giá trị chuỗi. Tại đây, bạn phải chỉ định dấu phân cách ở dạng char, nchar, varchar hoặc nchar làm đối số đầu tiên. Sau đó, bạn có thể chuyển các cột để nối trong các đối số tiếp theo. Đây là một ví dụ
/** Concatenating Table Columns **/ select CONCAT_WS[' - ', Employee_ID], Employee_Name] As Result from MTB_Table_A /* Result */ ------------------ A002 - William A003 - Jacob A004 - Tyler A005 - Emma A006 - Ryan A007 - Ashley A008 - Brayden A009 - Olivia A010 - Michael A011 - Emily [10 row[s] affected]
Trong SQL Server 2012 trở lên
CONCAT_WS[] không khả dụng trong SQL Server 2016 và các phiên bản thấp hơn. Tùy chọn gần nhất là sử dụng hàm CONCAT[] cùng với COALESCE[] và thêm các dấu phân cách theo cách thủ công. Tôi sẽ không nói rằng CONCAT[] + COALESCE[] thay thế CONCAT_WS[], nhưng đủ gần. Đây là một ví dụ
SELECT CONCAT[ COALESCE[CustomerName + ' - ', ''], COALESCE[PhoneNumber + ' - ', ''], COALESCE[PostalAddressLine1 + ' - ', ''], COALESCE[PostalAddressLine2 + ' - ', ''], COALESCE[PostalPostalCode, ''] ] AS Result FROM Sales.Customers /* Result */ ------------------------------------------------------------------------- Wingtip Toys [Ruthsburg, MD] - [240] 555-0100 - PO Box 6713 - Shinville - 90451 Eric Torres - [307] 555-0100 - PO Box 4858 - Sandhuville - 90218 Cosmina Vlad - [505] 555-0100 - PO Box 1954 - Gonzalesville - 90602 Bala Dixit - [209] 555-0100 - PO Box 8565 - Blahoville - 90676 Aleksandrs Riekstins - [605] 555-0100 - PO Box 6490 - Linnaville - 90797 Ratan Poddar - [907] 555-0100 - PO Box 6237 - Shakibaville - 90457 Shi Tu - [307] 555-0100 - PO Box 7197 - Nadarville - 90673 Gunnar Lohmus - [201] 555-0100 - PO Box 6430 - Malakarville - 90130 Jackson Kolios - [209] 555-0100 - PO Box 4028 - Lyville - 90693 Alena Kellnerova - [303] 555-0100 - PO Box 2343 - Radniaville - 90143 [10 row[s] affected]
Theo cách truyền thống
Không có chức năng đặc biệt nào có sẵn trong các phiên bản SQL Server trước năm 2012 để nối cột. Vì vậy, bạn phải sử dụng toán tử chuỗi cộng [+] cùng với COALESCE[] trong câu lệnh chọn. Đây là một ví dụ
Hàm _______2_______9 hoạt động theo cách tương tự. Nó chuyển đổi kiểu dữ liệu giống như hàmSELECT CONCAT_WS[': ', 'Comments', 9] AS Result;6, và nếu không thể chuyển đổi dữ liệu, thì nó sẽ trả về
Result ----------- Comments: 96
Hướng dẫn SQL này tập trung vào Nối chuỗi SQL Server và cung cấp các giải thích, ví dụ và bài tập. Đối với các bài tập của bài học này, hãy sử dụng liên kết này
Hướng dẫn này là một phần của một số bài viết giải thích cách viết các truy vấn cơ bản trong SQL Server. Để đọc các bài viết bổ sung về chủ đề này, vui lòng sử dụng các liên kết sau
- Viết câu lệnh SQL SELECT cơ bản
- Toán tử số học SQL
- Bí danh cột SQL
- Nối chuỗi SQL
- Từ khóa SQL DISTINCT
Nối chuỗi cơ bản SQL Server
Nối chuỗi máy chủ SQL cho phép bạn nối một chuỗi vào cuối chuỗi khác. Để hiển thị nội dung của hai cột trở lên dưới tên của một cột, bạn có thể sử dụng toán tử nối [+]
Ví dụ: để hiển thị tên của nhân viên cùng với họ của họ, hãy sử dụng câu lệnh SQL Server sau
SELECT first_name + last_name FROM employees
Kết quả
[No column name] ------------------------ JohnSmith
Máy chủ SQL – Nối hai trường với một khoảng trắng
Mặc dù trong ví dụ trước, kết quả được yêu cầu – hợp nhất hai giá trị từ hai cột khác nhau – đã đạt được, nhưng kết quả cuối cùng vẫn khá khó đọc, vì chúng tôi không có dấu cách giữa tên và họ. Do đó, bạn cũng nên nối một khoảng trắng [‘ ‘]
SELECT first_name + ' ' + last_name FROM employees
Kết quả
________số 8_______
Sử dụng bí danh cột máy chủ SQL
Để làm cho kết quả dễ đọc hơn, hãy sử dụng Bí danh cột SQL Server
SELECT first_name + ' ' + last_name AS 'FullName' FROM employees
Kết quả
FullName -------------- John Smith
Máy chủ SQL – Truy xuất các cột bổ sung
Trong SQL Server, nếu sau hoặc trước phép nối này, bạn muốn hiển thị một cột riêng biệt bổ sung, chỉ cần sử dụng dấu phẩy [,]
SELECT city, first_name + ' ' + last_name AS 'FullName', salary FROM employees
Kết quả
city FullName salary ------ ---------- ------------- London John Smith 5800
Máy chủ SQL – Nối nhiều hơn hai giá trị
Trong SQL Server có thể tạo các phép nối phức tạp hơn theo yêu cầu
SELECT 'Employee Name : ' + first_name + ' - ' + last_name AS 'E_DETAILS', FROM employees
Kết quả
E_Details ----------------------------- Employee Name : John- Smith
UpScale Analytics là một trong những nền tảng lớn nhất trên thế giới để học SQL bằng cách thực hành, bao gồm hơn 300 bài tập SQL ở các cấp độ khác nhau [bao gồm cả giải pháp], theo chủ đề, trên hơn 100 bộ dữ liệu khác nhau. Hơn…