NULL giảm an toàn trong các ước lượng thay thế cho hàm CONCAT của SQL Server 2012
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (Hai giải pháp) :
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 này đối chiếu với một số câu trả lời xuất sắc và cảnh báo được đưa ra bởi các á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 trống) ép kiểu để NULL
xử lý an toàn trong khi tính đến các hành vi khác nhau của +
toán tử liên quan đến các toán hạng cụ thể.
Lưu ý rằng giải pháp Hàm Scaler ODBC được giới hạn ở 2 đối số trong khi cách tiếp cận +
toán tử có thể mở rộng thành nhiều đối số khi cần.
Cũng xin lưu ý rằng vấn đề tiềm ẩn được @Swifty xác định liên quan đến varchar
kích thước mặc định đã được khắc phục ở đây varchar(MAX)
.