sql >> Databasteknik >  >> RDS >> PostgreSQL

Spring Data Rest:Datum är null-fråga ger ett postgres-undantag

Jag har spenderat lite tid på att titta på det här eftersom jag verkligen vill jämföra "datum är null" i frågor och det är resultatet:

När du använder "cast(foo.date som datum) är null ", det fungerar OK om fältet inte är null. Om fältet är null kastas detta undantag:

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

Lösningen är att använda koalescera:

coalesce(:date, null) is null

Det fungerar bra med eller inte testade data i fältet.

Exempel på min fråga:

@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)"
        + "                 )"
        + "             )"
        + "       ) "

Hoppas det fungerar för dig!



  1. Anslut med i Oracle SQL

  2. Kan jag köra en HTTP GET direkt i SQL under MySQL?

  3. Oracle Sök efter sträng i alla tabeller, alla kolumner

  4. Få inlägg gjorda idag men minst 20 minuter äldre