测试数据:
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次或者多次
^ - ^ ……