Oracle 正则表达式| 验证日期格式

实现校验 yyyy-mm-dd 格式,一句话讲清逻辑:
1. 校验 SQL 代码
SELECT *
FROM 表名
WHERE REGEXP_LIKE(DUEDATE, '^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[01])$');
2. 解释
正则片段 作用 
^[0-9]{4} 匹配 yyyy(4位年,如2025) 
- 匹配分隔符- 
`(0[1-9] 1[0-2])` 
- 匹配分隔符- 
`(0[1-9] 1[0-9] 
$ 严格结尾,确保无多余字符 

在正则表达式里,竖杠(|)是“或”的意思,用来分隔不同的匹配分支,只要满足其中一个分支的规则,就视为匹配成功 。

 

核心逻辑:用正则强制约束 年-月-日 格式,仅校验格式合法性(如 2025-02-30 会被正则放行,但实际日期不合法,需结合 TO_DATE 进一步校验真实有效性 )。
如果是要 单独写校验逻辑(比如自定义函数),可以这样简化:
-- 直接校验字段是否符合 yyyy-mm-dd 格式
SELECT DUEDATE,
       CASE 
         WHEN REGEXP_LIKE(DUEDATE, '^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[01])$') 
         THEN '格式合法' 
         ELSE '格式非法' 
       END AS 格式校验结果
FROM 表名;


一句话总结:用正则片段精准约束 年/月/日 各自的数字范围,快速筛出符合 yyyy-mm-dd 格式的记录,需注意仅校验格式,不保证日期真实存在(如 2025-04-31 格式符合但实际无此日期 )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值