Spring Boot JPA - SQL本地查询双撇号错误



我有一个大型查询,在正常的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" +

不能在本机查询中使用::吗?同样,当正常运行时,这也可以很好地工作。

您可以完全避免计算必要的转义序列的头痛。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)

不需要转义。并且使它更容易阅读(即理解)。

相关内容

  • 没有找到相关文章

最新更新