Nối chuỗi vào giá trị cột trong SQL

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àm
SELECT 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: 9
6

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…

Bạn có thể sử dụng += để nối các chuỗi không?

Nối chuỗi sử dụng toán tử += . Toán tử này cho phép kết nối các chuỗi bằng một hoặc nhiều biến. Another way to join two or more strings to make a concatenated string is to use the addition assignment operator [+=]. This operator makes it possible to connect strings using one or more variables.

Làm cách nào để nối chuỗi và cột trong MySQL?

Hàm CONCAT[] của MySQL dùng để cộng hai hoặc nhiều chuỗi. .
Có thể có một hoặc nhiều đối số
Trả về chuỗi kết quả từ việc nối các đối số
Trả về một chuỗi không nhị phân, nếu tất cả các đối số là chuỗi không nhị phân
Trả về một chuỗi nhị phân, nếu các đối số bao gồm bất kỳ chuỗi nhị phân nào

Chủ Đề