Oracle 正则表达式 REGEXP_LIKE

 测试数据:

create or replace view v as 
select '123' as data from dual union all 
select 'abc' from dual union all 
select '123abc' from dual union all 
select 'abc123' from dual union all 
select '1a2b3c' from dual union all 
select '1a2b3c#' from dual union all 
select '3$' from dual union all 
select '#a4' from dual union all 
select 'a  2 ' from dual ;

regexp_like(data, '[0-9A-Za-z]')

[0-9A-Za-z] : 表示了所有的数值和大小写字母

① 返回包含数值或字母的结果

select * from v where regexp_like(data, '[0-9A-Za-z]');
--返回包含数值或字母的结果

②返回不是只包含数值和只包含字母得结果

select * from v where regexp_like(data, '[^0-9A-Za-z]');
--返回不是只包含数值和只包含字母得结果

此时的^ 是在方括号内的

③ 返回以数值或字母开头的结果

select * from v where regexp_like(data, '^[0-9A-Za-z]');
--返回以数值或字母开头的结果

④ 返回以数值或字母结尾的结果

select * from v where regexp_like(data, '[0-9A-Za-z]$');
--返回以数值或字母结尾的结果

⑤ 返回只包含数值和字母的结果

select * from v where regexp_like(data, '^[0-9A-Za-z]+$');
--返回只包含数值和字母的结果

 

注意,这里必须有加号 + ,加号表示至少匹配一次或多次,* 星号表示至少匹配0次或多次;如果不加,就是只匹配一次

'^[0-9A-Za-z]$':表示只有一个字符,且符合为数值或者字母

请自行测试

总结:

^ : 在中括号外,表示以中括号里的内容开头的;在中括号里表示非,否定的含义;

$ : 表示以中括号内的内容结尾的;

+ : 表示至少匹配一次或多次

* : 表示至少匹配0次或者多次

^  - ^ ……

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值