Я извлекаю данные из таблицы, поле в основном пустое, но иногда это sysdate. Однако, поскольку это из таблицы, после получения поля его 'sysdate'
между одинарными кавычками. Как я могу его использовать?
Я пробовал to_date, to_date(to_char()). Мне нужно что-то, что работает внутри
select to_date('sysdate') from dual;
Единственный способ, который я знаю, это динамический SQL. Вот пример:
SQL> create table test (id number, col varchar2(20));
Table created.
SQL> insert into test
2 select 1, '''sysdate''' from dual union all
3 select 2, null from dual;
2 rows created.
SQL> declare
2 l_res test%rowtype;
3 l_str varchar2(200);
4 begin
5 for cur_r in (select id, col from test) loop
6 l_str := 'select ' || cur_r.id ||', '||
7 nvl(replace(cur_r.col, chr(39), null), 'null') || ' from dual';
8 execute immediate l_str into l_res;
9 dbms_output.put_line(l_res.id ||': '|| l_res.col);
10 end loop;
11 end;
12 /
1: 24.06.2019 12:18:39
2:
PL/SQL procedure successfully completed.
SQL>
Вы можете использовать выражение case:
select case
when the_column = 'sysdate' then sysdate
else to_date(the_column)
end as date_value
from the_table;