SQL> select to_date(' ','YYYYMMDD') from dual;
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, not be 0
SQL> select * from dual where to_date(' ','YYYYMMDD') = '19960512' or 1 = 2;
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, not be 0
SQL> select * from dual where to_date(' ','YYYYMMDD') = '19960512' or 1 = 1;
Success.
В первых двух операторах мы передаем пробелы в функцию TO_DATE, которая выдает ожидаемую ошибку. Но
Теперь в третьем операторе мы передаем пробелы в функцию оракула TO_DATE, что не разрешено. Но все же он выполняется успешно.
Почему?
В реальном коде я могу передать пробелы из переменной, а часть ИЛИ может быть или не быть правдой.
Кто-нибудь может объяснить мне это поведение и как справиться с ошибкой?
P.S. Я использую Oracle 12g EE