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]');
--返回包含数值或字母的结果

Oracle 正则表达式 REGEXP_LIKE_第1张图片

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

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

Oracle 正则表达式 REGEXP_LIKE_第2张图片

此时的^ 是在方括号内的

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

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

Oracle 正则表达式 REGEXP_LIKE_第3张图片

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

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

Oracle 正则表达式 REGEXP_LIKE_第4张图片

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

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

 Oracle 正则表达式 REGEXP_LIKE_第5张图片

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

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

请自行测试

总结:

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

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

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

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

^  - ^ ……

 

你可能感兴趣的:(ORACLE,oracle,正则表达式,数据库)