Oracle正则过滤日期

Oracle正则过滤日期

--1)创建测试表
create table date_regexp_test(
birth_date varchar(255)
);

--2)插入9条测试数据
--truncate table date_regexp_test;
insert into date_regexp_test values ('3993-01-12');
insert into date_regexp_test values ('1993-13-12'); --月份异常
insert into date_regexp_test values ('1993-01-32'); --日期异常
insert into date_regexp_test values ('1993-01-12');
insert into date_regexp_test values ('1989-01-01');
insert into date_regexp_test values ('1990-01-01');
insert into date_regexp_test values ('2000-01-01');
insert into date_regexp_test values ('2010-01-01');
insert into date_regexp_test values ('2020-01-01');
commit;

--3)排除月份异常和日期异常数据
select * from date_regexp_test where regexp_like(birth_date,'\d{4}-(0[1-9]|1[0-2])-(0[1-9]|(1|2)[0-9]|3(0|1))');

-- 3993-01-12
-- 1993-01-12
-- 1989-01-01
-- 1990-01-01
-- 2000-01-01
-- 2010-01-01
-- 2020-01-01

--4)纳入1990年到2020年之间的年份数据
select * from date_regexp_test where regexp_like(birth_date,'(199[0-9]|20(0|1)[0-9]|2020)-(0[1-9]|1[0-2])-(0[1-9]|(1|2)[0-9]|3(0|1))');

-- 1993-01-12
-- 1990-01-01
-- 2000-01-01
-- 2010-01-01
-- 2020-01-01

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、select ename, sal * 12 from emp; --计算年薪 2、select 2*3 from dual; --计算一个比较纯的数据用dual表 3、select sysdate from dual; --查看当前的系统时间 4、select ename, sal*12 anuual_sal from emp; --给搜索字段更改名称(双引号 keepFormat 别名有特殊字符,要加双引号)。 5、--任何含有空值的数学表达式,最后的计算结果都是空值。 6、select ename||sal from emp; --(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接) 7、select ename||'afasjkj' from emp; --字符串的连接 8、select distinct deptno from emp; --消除deptno字段重复的值 9、select distinct deptno , job from emp; --将与这两个字段都重复的值去掉 10、select * from emp where deptno=10; --(条件过滤查询) 11、select * from emp where empno > 10; --大于 过滤判断 12、select * from emp where empno 10 --不等于 过滤判断 13、select * from emp where ename > 'cba'; --字符串比较,实际上比较的是每个字符的AscII值,与在Java中字符串的比较是一样的 14、select ename, sal from emp where sal between 800 and 1500; --(between and过滤,包含800 1500) 15、select ename, sal, comm from emp where comm is null; --(选择comm字段为null的数据) 16、select ename, sal, comm from emp where comm is not null; --(选择comm字段不为null的数据) 17、select ename, sal, comm from emp where sal in (800, 1500,2000); --(in 表范围) 18、select ename, sal, hiredate from emp where hiredate > '02-2月-1981'; --(只能按照规定的格式写) 19、select ename, sal from emp where deptno =10 or sal >1000; 20、select ename, sal from emp where deptno =10 and sal >1000; 21、select ename, sal, comm from emp where sal not in (800, 1500,2000); --(可以对in指定的条件进行取反) 22、select ename from emp where ename like '%ALL%'; --(模糊查询) 23、select ename from emp where ename like '_A%'; --(取第二个字母是A的所有字段) 24、select ename from emp where ename like '%/%%'; --(用转义字符/查询字段中本身就带%字段的) 25、select ename from emp where ename like '%$%%' escape '$'; --(用转义字符/查询字段中本身就带%字段的) 26、select * from dept order by deptno desc; (使用order by desc字段 对数据进行降序排列 默认为升序asc); 27、sel

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值