sql - 在Oracle中使用分隔符从字符串中提取日期
问题描述
我想从具有格式的列中提取日期:"text #date" where date is of format "dd.mm.yyyy"
并且分隔符 char 是#
. 此外,日期未包含在所有记录中或记录为空。谢谢!
解决方案
您的日期格式包含 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<>在这里摆弄
推荐阅读
- xamarin - 将来自 web 服务调用的图像保存在本地 PCL 文件夹 Xamarin Forms 中
- laravel - 将 whereHas 中的值与父数据进行比较
- docker - 如何在基于 docker 的气流上安装 Kubernetes 操作员和执行程序
- sql-server - 当 SQL 中的组合没有数据时创建空行
- c# - 不同的使用方式
- python - 调用pickeled函数时出现RecursionError
- google-cloud-platform - 缺少 Google Cloud Platform (GCP) Cloud Shell “Boost”功能
- windows - 如何更改 Mac Native WebRTC 上的默认播放设备?
- sql - 如何从连接表中返回一行
- react-native - 如何在本机反应的文本输入中显示选定的日期和时间?