sql >> データベース >  >> RDS >> PostgreSQL

Spring Data Rest:日付がnullクエリはpostgres例外をスローします

    クエリで「日付がnull」を本当に比較したいので、これを調べるのに少し時間を費やしました。それが結果です:

    cast(foo.dateasdate)はnullです」を使用する場合 "、フィールドがnullでない場合は正常に機能します。フィールドがnullの場合、この例外がスローされます:

    org.postgresql.util.PSQLException: ERROR: cannot cast type bytea to date
    

    解決策は合体を使用することです:

    coalesce(:date, null) is null
    

    現場でデータをテストしてもしなくても問題なく動作します。

    私のクエリ例:

    @Query("SELECT c "
            + " FROM Entity c "
            + " WHERE "
            + "       and ( (coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is null) "
            + "             or ((coalesce(c.date, null) is not null) "
            + "                 and ( "
            + "                        ((coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is not null) and c.date <= :dateUntil) "
            + "                     or ((coalesce(:dateUntil, null) is null and coalesce(:dateFrom, null) is not null) and c.date >= :dateFrom)"
            + "                     or (c.date between :dateFrom and :dateUntil)"
            + "                 )"
            + "             )"
            + "       ) "
    

    それがあなたのために働くことを願っています!



    1. 特定の列の最新のエントリを選択するMySQLステートメント

    2. MySQLの各行のZスコアを計算しますか? (単純)

    3. 日付範囲に対するSQL結合?

    4. SQLを使用して文字列内の単語数を検索