Подтвердить что ты не робот

Выберите дату (временную метку) из PostgreSQL в качестве строки (char), остерегайтесь значения NULL

Я хочу выбрать дату (мой столбец - тип метки). Но когда в столбце указывается дата NULL, я хочу вернуть пустую строку. Как это сделать? Я написал это:

SELECT
   CASE WHEN to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') IS NULL THEN ''
      ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post END
   to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post, content
FROM topic;

Но это показывает мне некоторые ошибки, не знаю почему:

ERROR:  syntax error at or near "as"
LINE 1: ...ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_po...
                                                            ^
4b9b3361

Ответ 1

Использование функции COALESCE() - самый приятный подход, поскольку он просто заменяет заменяющее значение в случае NULL. Считываемость также значительно улучшена.:)

SELECT COALESCE(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') AS last_post, content FROM topic;

Ответ 2

select coalesce(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') as last_post, content
from topic;

Ответ 3

Вы помещаете свой AS в этом случае?

Try:

SELECT
   CASE WHEN last_post IS NULL THEN ''
     ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') END AS last_post,
   content
FROM topic;

Я еще не пробовал запрос.