Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Конкатенация строк - как лучше всего предусмотреть что одно из слагаемых может быть NULL?  [new]
Зум
Guest
Хочу добавить простейшую вычисляемую колонку.
Всё вычисление состоит в том, чтоб слепить через пробел значения из нескольких колонок этой же таблицы, а последнее в скобках.
ALTER TABLE test ADD user_title AS f4+' '+f2+' '+f7+' ('+comment+')';
С колонками f* проблем нет, они NOT NULL, так что доп.проверок не требуется. А вот колонка comment может быть (и довольно часто и бывает) равной NULL.
Если в последней пусто, то надо чтоб это прежде всего не портило результат, да и "пробел и пустые скобки" нам тоже совсем не надо.


Первейшая мысль, которая сразу же пошла в продакшн:
ALTER TABLE test ADD user_title AS f4+' '+f2+' '+f7+ISNULL(' ('+comment+')', '');
Как бы... Строка конкатенирующаяся с NULL даёт NULL, и ISNULL() в таком случае ловит и подменяет слогаемое на пустую строку. Всё ok?


Но я вот задумался - а как это будет для самого сервера? Может есть другое решение, которое или просто быстрее или в чём-то другом лучше для составления плана запроса?
Можно же и вот так:
ALTER TABLE test ADD user_title AS f4+' '+f2+' '+f7+COALESCE(' ('+comment+')', '');
И вот так тоже можно:
ALTER TABLE test ADD user_title AS f4+' '+f2+' '+f7+CASE WHEN comment IS NULL THEN '' ELSE ' ('+comment+')' END;
И фиг знает сколько ещё способов можно навыдумывать при желании...


Подскажите, как будет лучше и почему?
2 окт 17, 20:22    [20837309]     Ответить | Цитировать Сообщить модератору
 Re: Конкатенация строк - как лучше всего предусмотреть что одно из слагаемых может быть NULL?  [new]
flexgen
Member

Откуда:
Сообщений: 583
Зум
Подскажите, как будет лучше и почему?

У меня другой вопрос возник - а зачем так делать? Хочется склеить несколько полей в одно - напиши view и там клей что хочешь к чему хочешь.
2 окт 17, 20:46    [20837367]     Ответить | Цитировать Сообщить модератору
 Re: Конкатенация строк - как лучше всего предусмотреть что одно из слагаемых может быть NULL?  [new]
Зум
Guest
Системная необходимость. Но вопрос-то не в этом.
Или совсем сильно большая разница где это будет - во view или в вычисляемой?
2 окт 17, 20:51    [20837378]     Ответить | Цитировать Сообщить модератору
 Re: Конкатенация строк - как лучше всего предусмотреть что одно из слагаемых может быть NULL?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 15943
Зум
как будет лучше
Обасалютно пофиг.
2 окт 17, 20:53    [20837381]     Ответить | Цитировать Сообщить модератору
 Re: Конкатенация строк - как лучше всего предусмотреть что одно из слагаемых может быть NULL?  [new]
iap
Member

Откуда: Москва
Сообщений: 44577
CONCAT
3 окт 17, 10:28    [20838154]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить