Функция 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)

Мораль истории

Не верьте номеру строки, указанному в сообщении об ошибке.

0 ответов

Другие вопросы по тегам