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 : nối các cột trong sql

Bởi: | 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):

Xem Thêm  SUBSTRING (Transact-SQL) - Máy chủ SQL - ms truy cập chuỗi con sql

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ỳ một trong các cột tên. 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.

Xem Thêm  Tạo Kéo và Thả Đơn giản bằng Hướng dẫn Giao diện Người dùng jQuery - hướng dẫn kéo và thả jquery

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ủ đề nối các cột trong sql

Tạo liên kết giữa các bảng trong SQL Server

  • Tác giả: Phạm Khánh Bảo
  • Ngày đăng: 2020-08-17
  • Đánh giá: 4 ⭐ ( 3315 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Kết Nối Các Bảng Trong Sql Server, Truy Vấn Nhiều Bảng Với Join Trong Sql

  • Tác giả: chantamquoc.vn
  • Đánh giá: 3 ⭐ ( 4622 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách truy vấn nhiều bảng, sử dụng các loại JOIN như LEFT JOIN, RIGHT JOIN, INNER JOIN trong SQL để lấy dữ liệu kết hợp Truy vấn nhiều bảng, Tự khớp nối các bảng Một trong nhưng lợi ích chính của SQL là khả năng kết hợp dữ liệu từ hai hay nhiều bảng lại với nhau, Việc kết hợp các bảng lại như vậy gọi là JOIN, SQL sẽ tạo ra một bảng tạm thời chứa dữ liệu kết quả từ JOIN

Oracle SQL, nối nhiều cột + thêm văn bản

  • Tác giả: qastack.vn
  • Đánh giá: 4 ⭐ ( 7385 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn có hai tùy chọn để nối các chuỗi trong Oracle: CONCAT Sử dụng || Ví…
Xem Thêm  Các kiểu dữ liệu SQL cho MySQL, SQL Server và MS Access - kiểu dữ liệu sql w3schools

Câu Lệnh Inner Join 3 Bảng Trong Sql, Chủ Đề: Làm Sao Để Join Nhiều Bảng

  • Tác giả: nguthan.vn
  • Đánh giá: 3 ⭐ ( 4349 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1, Các loại Join trong SQLHôm nay mình chia sẻ thêm về các câu lệnh SQL Join, các loại Join trong SQLJOIN là phép kết nối dữ liệu từ nhiều bảng lại với nhau, nối 2 bảng, 3 bảng

Lệnh JOINS trong SQL, cú pháp, cách sử dụng, ví dụ minh họa

  • Tác giả: thuthuat.taimienphi.vn
  • Đánh giá: 5 ⭐ ( 1763 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lenh JOINS trong SQL, Lệnh JOINS trong SQL, cú pháp, cách sử dụng, ví dụ minh họa

Câu lệnh SQL Join: Các loại Join trong SQL

  • Tác giả: viblo.asia
  • Đánh giá: 4 ⭐ ( 1657 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1. Các loại Join trong SQL – Ở bài trước thì mình đã chia sẻ về các câu lệnh thường dùng trong truy vấn CSDL như: SQL DISTINCT, SQL Where,SQL And Or, SQL Count, SQL ORDER BY, SQL GROUP…

UNION trong SQL Server

  • Tác giả: comdy.vn
  • Đánh giá: 3 ⭐ ( 6491 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng UNION trong SQL Server để kết hợp kết quả của hai hoặc nhiều truy vấn thành một tập kết quả duy nhấ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

By ads_php