在Oracle中使用分隔符从字符串中提取日期

时间:2019-07-25 14:36:10

标签: sql oracle date substring

我想从格式为"text #date" where date is of format "dd.mm.yyyy"的列中提取日期,而分隔符char为#。此外,日期未包含在所有记录中,或者记录为空。谢谢!

2 个答案:

答案 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;