Trong mẹo này, chúng tôi xem xét các cách khác nhau để nối dữ liệu chuỗi SQL Server và cách xử lý các giá trị NULL khi nối chuỗi.
Bạn đang xem : sql nối các cột thành chuỗi
Bởi: Chad Churchwell | Cập nhật: 2021-07-21 | Nhận xét (17) | Liên quan: 1 | 2 | 3 | 4 | 5 | 6 | Thêm & gt; Hệ thống chức năng
Vấn đề
Tôi cần tạo nhãn gửi thư từ cơ sở dữ liệu Microsoft SQL Server của mình, vì vậy tôi đang sử dụng
dấu + để nối họ, tên đệm và họ với nhau. Các
vấn đề tôi thấy là tôi nhận được NULL cho rất nhiều hàng. Điều này khiến tôi không thể sản xuất
tên đầy đủ. Một số tùy chọn để giải quyết vấn đề này là gì? Thủ tục thanh toán
hướng dẫn này để tìm hiểu thêm về cách nối dữ liệu trong SQL Server với T-SQL
nối chuỗi.
Giải pháp
Trước SQL Server 2012, quá trình nối đã được thực hiện bằng cách sử dụng dấu cộng (+)
ký để nối các trường với nhau của nhiều kiểu dữ liệu khác nhau (varchar, char, int,
số, v.v.). Hạn chế của phương pháp này là nếu có
các trường bạn đang nối là NULL, giá trị chuỗi cuối cùng là NULL. Trong SQL Server 2012
và sau này có
Hàm CONCAT ()
thay thế NULL bằng một chuỗi trống. Hãy xem mẹo này để biết cách này
chức năng mới hoạt động và nó có thể mang lại lợi ích như thế nào trong mã của bạn.
Đối với bản trình diễn này, tôi sẽ sử dụng bảng Person.Person từ AdventureWorks2012
cơ sở dữ liệu để trình diễn các hàm SQL để tạo tên đầy đủ để tạo nhãn gửi thư. Ngày thứ nhất,
ví dụ sau là kỹ thuật cũ để nối các chuỗi bằng cách sử dụng dấu +
(điều hành nối):
LỰA CHỌN Tiêu đề, Họ, Tên đệm, Họ, Title + '' + FirstName + '' + MiddleName + '' + LastName dưới dạng MailingName TỪ Người. Người
Như bạn có thể thấy trong ảnh chụp màn hình bên dưới MailingName là NULL cho bất kỳ hàng nào
có NULL cho bất kỳ cột tên nào. Các hàng duy nhất có MailingName được lấp đầy
có một giá trị cho tất cả các cột tiêu đề, họ, tên đệm và họ.
Điều này có thể được sửa chữa bằng cách gói
ISNULL (cột, ”) xung quanh tất cả các cột trong trường được nối với tài khoản
cho bất kỳ giá trị nào có null, nhưng mã đó dài, lộn xộn và khó đọc.
Dưới đây là cú pháp mẫu đang sử dụng
ISNULL cùng với dấu cộng để nối các giá trị. Các
Hàm ISNULL sẽ thay thế các giá trị NULL bằng giá trị được ghi chú trong giây
, trong ví dụ này là một chuỗi rỗng.
LỰA CHỌN Tiêu đề, Họ, Tên đệm, Họ, ISNULL (Tiêu đề, '') + '' + ISNULL (Tên đầu tiên, '') + '' + ISNULL (Tên giữa, '') + '' + ISNULL (Tên cuối cùng, '') là MailingName TỪ Người. Người
Như bạn có thể thấy trong ví dụ bên dưới, MailingName không còn NULL như trước nữa
đã thay thế các giá trị NULL bằng một chuỗi trống. Điều này đạt được giống như việc sử dụng
Hàm CONCAT () , nhưng yêu cầu nhiều mã và khả năng đọc hơn.
Bộ mã tiếp theo đang sử dụng
Hàm CONCAT () trong SQL Server 2012 và các phiên bản mới hơn với
Tuyên bố SELECT . Nó thay thế các giá trị NULL bằng một giá trị trống
chuỗi kiểu VARCHAR (1). Câu lệnh SQL này dễ đọc và dễ viết hơn nhiều khi bạn cần
để xử lý mã NULL tại chỗ và tạo một chuỗi đơn trong một
cột có khoảng trắng làm dấu phân cách.
LỰA CHỌN Tiêu đề, Họ, Tên đệm, Họ, CONCAT (Title, '', FirstName, '', MiddleName, '', LastName) dưới dạng MailingName TỪ Người. Người
Nếu bạn thấy kết quả của việc này, tất cả các giá trị MailingName đều hiện diện, ngay cả khi chúng
có một số cột được đặt thành NULL.
Như bạn có thể thấy, chức năng mới này rất tiện dụng và hoạt động khác nhiều so với
dạng cũ của nối. Thay vì đánh giá thành NULL nếu có nếu các cột
chứa các giá trị NULL,
Hàm CONCAT ()
thay thế nó bằng một chuỗi trống. Điều này rất hữu ích để mã hóa xung quanh giá trị NULL.
Các bước tiếp theo
Giới thiệu về tác giả
Bài viết cập nhật lần cuối: 2021-07-21
Xem thêm những thông tin liên quan đến chủ đề sql nối các cột thành chuỗi
SQL Query | Split concatenated string into columns | SplitString function
- Tác giả: Learn at Knowstar
- Ngày đăng: 2020-07-13
- Đánh giá: 4 ⭐ ( 6690 lượt đánh giá )
- Khớp với kết quả tìm kiếm: This video discusses how to use the splitstring function in sql server to split a concatenated string into separate columns.
Please do not forget to like, subscribe and share.
For enrolling and enquiries, please contact us at
Website – http://knowstar.org/
Facebook – https://www.facebook.com/knowstartrainings/
Linkedin – https://www.linkedin.com/company/knowstar-e-learning-solutions/?viewAsMember=true
Email – learn@knowstar.org
Nối chuỗi trong sql sử dụng hàm CONCAT() và CONCAT_WS()
- Tác giả: hoclaptrinh.vn
- Đánh giá: 4 ⭐ ( 7515 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Trong SQL chúng ta có thể sử dụng 2 hàm CONCAT() và CONCAT\_WS() để nối chuỗi. Nếu chưa hiểu rõ lắm về cách dùng 2 hàm này trong SQL
SQL CREATE TABLE:Hướng dẫn Cách thực hiện
- Tác giả: vn.wsxdn.com
- Đánh giá: 3 ⭐ ( 9534 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
Lập Trình Từ Đầu
- Tác giả: laptrinhtudau.com
- Đánh giá: 3 ⭐ ( 4522 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Nối chuỗi trong SQL – Lập Trình Từ Đầu 1 Hàm xử lý chuỗi SQL
Nối chuỗi CONCAT tùy biến tên cột với AS và toán tử số học SQL
- Tác giả: xuanthulab.net
- Đánh giá: 3 ⭐ ( 4558 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Sử dụng hàm nối chuỗi CONCAT ||, đặt tên cột mới cho biểu thức trả về với AS và các toán sử số học như cộng, trừ để tạo biểu thức SQL
CONCAT – Hàm nối chuỗi
- Tác giả: www.sql.edu.vn
- Đánh giá: 4 ⭐ ( 9265 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Hàm CONCAT trong Microsoft SQL Server dùng để nối hai hay nhiều chuỗi thành một chuỗi duy nhất, nếu chuỗi NULL thì kết quả trống.
Hàm xử lý chuỗi trong SQL
- Tác giả: vietjack.com
- Đánh giá: 4 ⭐ ( 8615 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Hàm xử lý chuỗi trong SQL – Học SQL cơ bản nâng cao. Học SQL trực tuyến theo các bước từ Khái niệm về database, Cú pháp SQL, Truy vấn SELECT, Truy vấn INSERT, Lệnh DELETE, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Lệnh TRUNCATE, Từ khóa DISTINCT, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Mệnh đề WHERE, Sử dụng Join, Sử dụng View, Sử dụng Sequence, Transaction, Hàm xử lý, Bảng tạm, Toán tử.
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình