我有一個在普通 postgres 中運行良好的大型查詢,但是當我在 JPA 本機查詢中運行時,我收到以下錯誤:
org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
該查詢包含以下行:
...
WHERE year = extract( year FROM CURRENT_DATE - '2 month'::interval)::int
and month = extract( month FROM CURRENT_DATE - '2 month'::interval)::int
...
我嘗試通過在每個撇號前添加 \ 進行轉義,但代碼無法編譯:
error: illegal escape character
" WHERE year = extract( year FROM CURRENT_DATE - '2 month'\:\:interval)\:\:int and month = extract( month FROM CURRENT_DATE - '2 month'\:\:interval)\:\:int \n"
不能在本地查詢中使用 :: 嗎?同樣,這在正常運行時作業得很好。
uj5u.com熱心網友回復:
您可以避免完全計算必要的轉義序列的麻煩。Postgres 使用雙冒號 (::) 作為專有的 CAST 操作,但支持 SQL 標準。此外,'2 month'您可以通過添加前綴來宣告字串,而不是將字串轉換為間隔。你的條款然后變成:
where year = cast (extract( year FROM CURRENT_DATE - interval '2 month') as integer)
and month = cast (extract( month FROM CURRENT_DATE - interval '2 month') as integer)
無需逃生。并且使它更容易閱讀(即理解)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341623.html
標籤:春天 PostgreSQL jpa
