Oracle to_date с перехватом ошибки

1 min read
Имеется таблица транзакции (transactions). В ней имеется числовое поле - идентификатор транзакции (trnno) в формате 'yymmddnnnnnnnnnn', где:
yy - год mm - месяц,
dd - день,
nnnnnnnnnn - уникальное число за эту дату
но данное правило не всегда соблюдается и в поле trnno иногда (хотя очень редко) записываются числа, не соответствующие вышеприведенному правилу. Соответственно при выборке записей за определенную дату возникает ошибка преобразования поля trnno в дату.
Для решения этой проблемы воспользуемся конструкцией
DEFAULT expr ON CONVERSION ERROR
который присутствует с версии 12.2:
SELECT * FROM
(
SELECT to_date(substr(to_char(c.trnno), 1, 6) DEFAULT null ON CONVERSION ERROR, 'YYMMDD') TrnDate
FROM transactions c
)
WHERE (sysdate - nvl(TrnDate, sysdate)) >= 90
0
Subscribe to my newsletter
Read articles from Unison directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
