PostgreSQLでDATE型にCASTするときに空文字が含まれるケースの対応

PostgreSQLで文字列をCASTして日付形式にしてソートするなどの場合、空文字の扱いを考えておく必要があります。

PostgreSQL場合だと、空文字とNULLは別になるので、文字の長さを見て0であればNULLにする、という処理が必要になります。

これをやらないと以下の様なエラーが出ます

ERROR: invalid input syntax for type date: ""

CASE文を使って対応します。

SELECT 
    CAST(CASE
            WHEN LENGTH(r2.value) = 0 THEN NULL
            ELSE r2.value
        END
        AS DATE)
FROM
    eip_t_gpdb_record r2
WHERE
    r2.gpdb_item_id = 1961