Bezpieczny spadek o wartości NULL w przybliżeniach zastępczych dla funkcji CONCAT programu SQL Server 2012
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (dwa rozwiązania) :
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
Te dwa rozwiązania obejmują kilka doskonałych odpowiedzi i zastrzeżeń zgłoszonych przez inne plakaty, w tym @Martin Smith, @Svish i @ vasin1987.
Te opcje dodają NULL
do ''
rzutowania (pusty łańcuch), aby zapewnić bezpieczną NULL
obsługę, biorąc pod uwagę różne zachowania +
operatora dotyczące określonych operandów.
Należy zauważyć, że rozwiązanie funkcji skalowania ODBC jest ograniczone do 2 argumentów, podczas gdy podejście +
operatora jest skalowalne do wielu argumentów w razie potrzeby.
Zwróć również uwagę na potencjalny problem zidentyfikowany przez @Swifty dotyczący domyślnego varchar
rozmiaru, rozwiązany tutaj przez varchar(MAX)
.