NULL thả an toàn trong xấp xỉ thay thế cho SQL Server 2012 CONCAT chức năng
SQL Server 2012:
SELECT CONCAT(data1, data2)
PRE SQL 2012 (Hai Solutions):
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
Hai giải pháp đối chiếu vài câu trả lời tuyệt vời và hãy cẩn thận nêu ra bởi áp phích khác bao gồm @ Martin Smith, @Svish và @ vasin1987.
Các tùy chọn này thêm NULL
vào ''
(chuỗi rỗng) để xử lý an toàn NULL
trong khi tính toán hành vi khác nhau của toán hạng +
liên quan đến toán hạng cụ thể.
Lưu ý giải pháp ODBC Scaler Function được giới hạn trong 2 đối số trong khi cách tiếp cận +
nhà điều hành có thể mở rộng thành nhiều đối số nếu cần.
Cũng lưu ý vấn đề tiềm năng được xác định bởi @Swifty về mặc định là varchar
kích thước tại đây được khắc phục bởi varchar(MAX)
.
Nguồn
2017-11-21 21:48:00
@Oded Tôi chỉ cố gắng thực thi lệnh stmt - select concat ('b', 'a') –
@marc_s: Tài liệu này có một số dấu hiệu cho biết đó là SQL Server 2012, nhưng không có dấu hiệu nào cho thấy 'CONCAT' * mới * cho năm 2012. – Gabe
Nó gián tiếp chỉ ra rằng đó là cho năm 2012, nhưng trang là thiết kế giao diện người dùng kém. Trên các trang có chức năng IS trong các phiên bản cũ hơn, có một trình đơn thả xuống trực tiếp bên cạnh phiên bản của tài liệu bạn đang đọc. Nếu bạn biết điều này, thì bạn biết rằng nó chỉ dành cho năm 2012. Nếu bạn không biết điều đó, bạn sẽ kết thúc trong tình huống tương tự như Mitesh. – John