我在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个字符。