Функция LOCATE выдает ошибку "OAR-01861: литерал не соответствует строке формата"
Очень новый для Oracle.
Я использую некоторый код от друга, но он вызывает вышеупомянутую ошибку.
select count(REFERENCE_#)
from ARADMIN.ALL_REQUESTS
where (DATE_OCCURRED >= add_months(sysdate, -12) )
and ({FN LOCATE('INFO-MGMT-SRVCS.R3', "ALL_REQUESTS"."TRACE_LOG")} > 0)
Я перебираю Google, и большинство совпадений было связано с датами, поэтому я предполагаю, что Oracle пытается преобразовать строковый литерал 'INFO-MGMT-SRVCS.R3'
на свидание.
Это правильно?
Если да, то как мне сказать, что это на самом деле строка и она должна оставаться как есть?
Если я ошибаюсь, почему я получаю эту ошибку?
Спасибо
Редактировать:
Я только что попробовал
select count(REFERENCE_#)
from ARADMIN.ALL_REQUESTS
where (DATE_OCCURRED >= add_months(sysdate, -12) )
and ({FN LOCATE('foo', "ALL_REQUESTS"."TRACE_LOG")} > 0)
и это дало мне ту же ошибку, поэтому мое предположение было неверным.
Редактировать 2: Это, кажется, связано с моим первым пунктом, где (DATE_OCCURRED >= add_months(sysdate, -12) )
, Я думал, что это связано с моим вторым из-за номера строки, о которой сообщалось в сообщении об ошибке.
Окончательное редактирование:
Рабочий код:
select count(REFERENCE_#)
from ARADMIN.ALL_REQUESTS
where (to_date(DATE_OCCURRED, 'YYYY-MM-DD HH24:MI:SS') >= add_months(sysdate, -12) )
and ({FN LOCATE('INFO-MGMT-SRVCS.R3', "ALL_REQUESTS"."TRACE_LOG")} > 0)
Мораль истории
Не верьте номеру строки, указанному в сообщении об ошибке.