NULL безопасное падение в приближении замены для функции CONCAT в SQL Server 2012
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (два решения) :
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
Эти два решения объединяют несколько отличных ответов и предостережений, высказанных другими авторами, включая @Martin Smith, @Svish и @ vasin1987.
Эти параметры добавляют NULL
к приведению ''
(пустая строка) для безопасной NULL
обработки с учетом различного поведения +
оператора, относящегося к конкретным операндам.
Обратите внимание, что решение ODBC Scaler Function ограничено двумя аргументами, тогда как +
операторный подход масштабируется до многих аргументов по мере необходимости.
Также обратите внимание на потенциальную проблему, выявленную @Swifty относительно varchar
размера по умолчанию, исправляемого здесь varchar(MAX)
.