在hbm文件的select语句中使用right函数出错



我在hibernate HBM文件中得到以下语句的错误:

...
<subselect>
   <![CDATA[
      select t.colA, right(t.colB, 12) b
   ]]>
</subselect>
...

错误是Caused by: java.sql.SQLException: ORA-00904: "RIGHT": invalid Identifier

数据库:Oracle 11gHibernate: 3.5.6-Final

在Java端,我使用Hibernate Criteria从数据库检索数据。没有right功能,工作无误差。如果直接在数据库上使用sql客户端执行该语句,则不会出现错误。

是Criteria API导致了这个问题吗?

Oracle似乎不支持RIGHT功能。您可以尝试使用SUBSTR函数代替,如:

select t.colA, substr(t.colB,-12) b 

引用:

oradev上的Oracle字符串函数

Oracle String Functions on techonthenet

Oracle/PLSQL String Functions

Oracle右函数

substr(name,-3)与substr(name,length(name)-3,3)与substr(name,-3,3)的区别

SUBSTR(Var, StartPos, Length)
例如

:

SUBSTR("HELLO", LENGTH("HELLO") - 3) -> "ELLO"
SUBSTR("HELLO", LENGTH("HELLO") - 3, 3) -> "ELL"
SUBSTR("HELLO", -3) -> "LLO"

不要使用LENGTH(Name) - 3,因为它是最后4个字符。

最新更新