Обработка NULL в конкатенации строк сервера Sql - PullRequest
3 голосов
/ 09 ноября 2011

У меня следующий SQL-запрос

select s.comments + s.further_comments from dbo.samples s where id = 1234

Однако, если s.comments или s.future_comments равен NULL, возвращается вся строка NULL

Как преобразовать значение NULL впустая строка или, по крайней мере, только вернуть ненулевые значения в этой строке?

Спасибо

1 Ответ

6 голосов
/ 09 ноября 2011

Для этого вы можете использовать ISNULL или COALESCE .

SELECT ISNULL(s.comments, '') + ISNULL(s.further_comments, '')
SELECT COALESCE(s.comments, '') + COALESCE(s.further_comments, '')

ISNULL

Replaces NULL with the specified replacement value.

COALESCE

Returns the first nonnull expression among its arguments.

Обратите внимание, что имеют некоторые различия между этими двумя методами, но, по сути, они, скорее всего, не относятся к вашей ситуации.

  1. ISNULL (NULL, NULL) - это int
  2. COALESCE (NULL, NULL) - выдаст ошибку
  3. COALESCE (CAST (NULL как int), NULL) - он действителен и возвращает int
  4. ISNULL принимает только 2 параметра, тогда как COALESCE принимает переменное число параметров
  5. COALESCE основан на стандарте ANSI SQL, тогда как ISNULL является проприетарной функцией TSQL
...