#sql #oracle
#sql #Oracle
Вопрос:
Я получаю ORA-00920: invalid relational operator
сообщение об ошибке при переходе к моему предложению where.
and (round(to_number(c.rest_time - a.TIME_STAMP) * 24 * 60 )) > 5
Полное предложение Where
From TableA a,TableB b
where round(to_number(a.rest_time - a.time_stamp) * 24 * 60 )) > 5
and a.time_stamp > '05-12-2014 22:00:00'
and a.rest_time < '05-14-2014 14:00:00'
and a.dev = 'CUSTOMER'
and b.xid = a.xid
and b.accno = a.accno
and b.name is not null
and b.dis is null
Комментарии:
1. Можете ли вы опубликовать полное
WHERE
предложение?2. И типы данных столбцов
3. Нужно ли добавлять TO_DATE в поля a.time_stamp и a.rest_time?
4. Дело в том, что у меня то же условие, что и в другом, но похожем запросе, и оно не выдает ошибку..
5. a.time_stamp > ’05-12-2014 22:00:00′ Разве это не сравнение числа со строкой?
Ответ №1:
У вас есть лишняя правая скобка . Это должно быть ... where round(to_number(a.rest_time - a.time_stamp) * 24 * 60 ) > 5 ...
Например,
-- your case (throws invalid relational operator ):
select 1 from dual where round(to_number(sysdate- sysdate) * 24 * 60 )) > 5 ;
--corrected :
select 1 from dual where round(to_number(sysdate- sysdate) * 24 * 60 ) > 5 ;
Комментарии:
1. лол, я чувствую себя плохо, даже публикуя этот вопрос. Это была дополнительная скобка, когда я скопировал это условие из моего другого запроса. Вероятно, я пропустил копирование
(
. Еще раз спасибо.