Если вы просто используете стандартную функцию конкатенации, такую как concat()
или оператор ||
, вы получите полную строку null
, если любой элемент равен null
.
. Вы можете использовать функция concat_ws()
, которая игнорирует значение null
. Но вы ожидаете, что они будут показаны.
Таким образом, вам нужно преобразовать действительное значение null
в ненулевой текст 'null'
. Это можно сделать с помощью функции COALESCE()
, которая принимает несколько аргументов и возвращает первый ненулевой. Но здесь возникает проблема, что строка 'null'
имеет другой тип (text
), чем столбцы (int
). Таким образом, вы должны выровнять типы, например, приведя значения int
к text
ранее. Итак, ваш запрос может выглядеть следующим образом:
Нажмите: demo: db <> fiddle
SELECT
concat_ws('-',
COALESCE(begin::text, 'null'),
COALESCE(month::text, 'null'),
COALESCE(year::text, 'null')
)
FROM mytable