【发布时间】:2019-12-03 21:11:25
【问题描述】:
我想从具有以下格式的列中提取日期:"text #date" where date is of format "dd.mm.yyyy",分隔符为#。此外,日期未包含在所有记录中或记录为空。谢谢!
【问题讨论】:
我想从具有以下格式的列中提取日期:"text #date" where date is of format "dd.mm.yyyy",分隔符为#。此外,日期未包含在所有记录中或记录为空。谢谢!
【问题讨论】:
您的日期格式包含 10 个字符;所以检查从末尾开始的第 11 个字符是否是分隔符,如果是,则提取日期,否则返回 NULL:
SELECT CASE
WHEN SUBSTR( your_column, -11, 1 ) = '#'
THEN TO_DATE( SUBSTR( your_column, -10 ), 'dd.mm.yyyy' )
ELSE NULL
END
FROM your_table
如果日期可以有一位数的天/月,那么日期不会正好是 10 个字符,那么:
SELECT CASE
WHEN INSTR( your_column, '#', -1 ) > 0
THEN TO_DATE( SUBSTR( your_column, INSTR( your_column, '#', -1 ) + 1 ), 'dd.mm.yyyy' )
ELSE NULL
END
FROM your_table
db小提琴here
【讨论】:
您也可以通过以下查询提取日期:-
select to_date (trim(substr(key1 ,instr(key1,'#',1) +1 )),'dd/mm/yyyy' ) date1 from test_table
where instr(key1,'#') > 0;
【讨论】: