我想从格式为"text #date" where date is of format "dd.mm.yyyy"
的列中提取日期,而分隔符char为#
。此外,日期未包含在所有记录中,或者记录为空。谢谢!
答案 0 :(得分:2)
您的日期格式包含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
答案 1 :(得分:0)
您也可以通过以下查询提取日期:-
select to_date (trim(substr(key1 ,instr(key1,'#',1) +1 )),'dd/mm/yyyy' ) date1 from test_table
where instr(key1,'#') > 0;