web-dev-qa-db-ja.com

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...
                                                            ^
17
Katie

COALESCE()関数を使用するのが最も良い方法です。これは、NULLの場合に代替値で単純にスワップするためです。読みやすさも大幅に向上しています。 :)

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

ASをケースに入れますか?

試してください:

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;

私はまだクエリを試していません。

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