Ошибка с функцией `right` в операторе select в файле hbm - PullRequest
1 голос
/ 16 декабря 2011

Я получаю сообщение об ошибке со следующим утверждением в файле hibernate hbm:

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

Ошибка: Caused by: java.sql.SQLException: ORA-00904: "RIGHT": invalid Identifier

База данных: Oracle 11g Hibernate: 3.5.6-Final

На стороне Java я использую Hibernate Criteria для извлечения данных из базы данных.Без функции right она работает без ошибок.Оператор выполняется без ошибок, слишком напрямую выполняется с клиентом SQL в базе данных.

Может ли Criteria API вызвать проблему?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Oracle не поддерживает RIGHT функцию. Вместо этого вы можете попробовать использовать функцию SUBSTR, например:

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

Ссылки:

Строковые функции Oracle для oradev

Строковые функции Oracle в techonthenet

Строковые функции Oracle / PLSQL

Правильная функция Oracle

0 голосов
/ 24 октября 2015

разница между substr (имя, -3) и substr (имя, длина (имя) -3,3) и substr (имя, -3,3)

SUBSTR(Var, StartPos, Length)

Дляпример:

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

Не используйте ДЛИНУ (Имя) - 3, потому что это последние 4 символа.Вместо этого используйте -3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...