NULL безопасно падение замены аппроксимаций для SQL Server 2012 CONCAT Функция
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 Смит, @Svish и @ vasin1987.
Этих вариантов добавить NULL
к ''
(пустой строке) отливки для безопасного обращения с NULL
в то время учета меняющегося поведения +
оператора, относящегося к конкретным операндам.
Обратите внимание на ODBC Scaler Function решения ограниченно 2 аргументов в то время как +
оператора подхода является масштабируемым многими аргументами по мере необходимости.
Обратите внимание также на потенциальную проблему, идентифицированную @Swifty относительно размера по умолчанию varchar
, здесь устраняемого varchar(MAX)
.
@Oded Я просто попробую выполнить stmt - select concat ('b', 'a') –
@marc_s: В документации есть некоторые указания, что это для SQL Server 2012, но нет никаких указаний на то, что 'CONCAT' это * новый * на 2012 год. – Gabe
Он косвенно указывает, что он на 2012 год, но страница плохой дизайн пользовательского интерфейса. На страницах, где функция IS доступна в более старых версиях, выпадаете непосредственно рядом с версией документа, который вы читаете. Если вы это знаете, тогда вы знаете, что это только на 2012 год. Если вы этого не знали, вы попадаете в ту же ситуацию, что и Митеш. – John