Как я могу использовать COALESCE для возврата 'N / A', когда значение столбца TIMESTAMP равно NULL? - PullRequest
0 голосов
/ 09 мая 2019

Можно ли использовать COALESCE (или любым другим способом) для замены значений NULL из столбца TIMESTAMP строкой, подобной 'N / A'?

В моем SELECT заявлении у меня есть

CASE WHEN n.expiration_date::date IS NULL THEN 'N/A' ELSE n.expiration_date::date END

Когда я пытаюсь это сделать, я получаю эту ошибку, которая имеет смысл:

неверный синтаксис ввода для даты типа: «N / A»

Я нашел это сообщение в блоге тоже об этой проблеме. Есть ли способ обойти это?

1 Ответ

4 голосов
/ 09 мая 2019

Все значения выражения CASE должны соответствовать одному типу данных.

Если вам действительно нужно N / A, вам нужно преобразовать дату в тип символа:

CASE 
    WHEN n.expiration_date IS NULL THEN 'N/A' 
    ELSE n.expiration_date::date::text 
END

Или, если вы хотите контролировать формат:

CASE 
    WHEN n.expiration_date IS NULL THEN 'N/A' 
    ELSE to_char(n.expiration_date, 'YYYY-MM-DD')
END
...