Конкатенация строк - это объединение нескольких строк в одну. Мы рассматривали возможности SQL для конкатенации строк здесь.
Сейчас рассмотрим, как ведут себя NULL значения при объединении строк.
SELECT 'Раз, ' || 'два, ' || NULL AS result
| # | result |
|---|---|
| 1 | NULL |
Если хотя бы одна из строк при конкатенации через || будет равна NULL, то результат конкатенации будет NULL.
Для тех, кто переходит с ORACLE на PostgreSQL, это может быть неожиданностью. В ORACLE значения NULL при конкатенации обрабатываются как пустая строка '' и не превращают результат в NULL.
Воспользуемся функцией concat:
SELECT concat('Раз, ', 'два, ', NULL) AS result
| # | result |
|---|---|
| 1 | Раз, два, |
Функция concat игнорирует NULL значения.