首页 > 解决方案 > 在Oracle中使用分隔符从字符串中提取日期

问题描述

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

标签: sqloracledatesubstring

解决方案


您的日期格式包含 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<>在这里摆弄


推荐阅读