Oracle10g新特性——正则表达式

本文介绍如何使用Oracle 10g中的正则表达式函数简化复杂查询,通过实例展示了REGEXP_LIKE函数的应用,特别关注电话号码模式匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行查询时,有时候需要按照一定的特殊规则来查找某个字符串,比如,你可能需要查询第三位为5-8,最后四位为’8888’的所有电话。在9i之前,你可能需要写一个很复杂的条件:
Select username from t_userinfowhere (phonenumber like ‘135%8888’or phonenumber like ‘136%8888’or phonenumber like ‘137%8888’or phonenumber like ‘138%8888’)and length(phonenumber) = 13;

    那时就会很羡慕java程序员可以使用一个正则表达式轻松搞定。10g中,再也不需要这么复杂了, oracle也提供了几个正则表达式函数,大大方便了开发人员:REGEXP_LIKE、REGEXP_REPLACE、REGEXP_INSTR、REGEXP_SUBSTR,分别用于模糊匹配、代替、插入、截取字符串。关于正则表达式的规则这就不详细描述了, 可以查相关资料得到。简单举例。以上面例子为例,我们的查询语句可以写成: 

SQL> create table t_userinfo (username varchar2(10), phonenumber varchar2(13));
Table created
SQL> insert into t_userinfo values ('zhansan', '13012323434');1 row insertedSQL> insert into t_userinfo values ('lisi', '13512348888');
1 row inserted
SQL> insert into t_userinfo values ('wangwu', '13912328888');1 row insertedSQL> insert into t_userinfo values ('zhaoliu', '13743218888');
1 row inserted
SQL> insert into t_userinfo values ('sunqi', '1361234888');
1 row inserted
SQL> commit;Commit complete
SQL> Select username, phonenumber from t_userinfo2 where REGEXP_LIKE(phonenumber, '13[5-8][0-9][0-9][0-9][0-9]8{4}');
USERNAME PHONENUMBER---------- -------------
lisi 13512348888
zhaoliu 13743218888
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值