设为首页 加入收藏

TOP

[每日一题] OCP1z0-047 :2013-08-22 正则表达式---[^Ale|ax.r$]'
2015-07-24 10:36:18 来源: 作者: 【 】 浏览:1
Tags:每日 OCP1z0-047 :2013-08-22 正则 表达式 --- Ale ax.r '
[每日一题] OCP1z0-047 :2013-08-22 正则表达式---[^Ale|ax.r$]'
?
?
正确答案:DE
?
一、Oracle正则表达式的相关知识点
'[^Ale|ax.r$]':
^:匹配行的开始字符
$:匹配行的结束字符
[]:方括号表示指定一个匹配列表,该列表匹配列表中显示的任何表达式。
[^]:同上面相反,非匹配列表表达工。
.:匹配任意一个字符(除了NULL)
|:替换元字符;结束第一个选项并开始下一个替换表达式
[^Ale|ax.r$]'中^表示只匹配不在集合{'A','l','e','|','a','x','.','r','$'}中的字符, 此处的'|'、'.'、'$'只是表示普通的字符,而非匹配符。字符串: [Ale|ax.r$] 匹配Alex,Alax ,Alxer ,A,l,e,a.............
不包含 A l e a x r的串,等效于[^Aleaxr],只要在串里面找到符合条件的字符(哪怕就一个)就算匹配。
先来看一下答案:
?
[html] 
gyj@MYDB> with gyj_test as (  
  2   select 'Alex' name from dual  
  3   union all  
  4   select 'Alax' name from dual  
  5   union all  
  6   select 'Alxer' name from dual  
  7   union all  
  8   select 'Alexender' name from dual  
  9   union all  
 10   select 'Alexendar' name from dual)  
 11   select * from gyj_test where  regexp_like(name,'[^Ale|ax.r$]');  
  
NAME  
---------  
Alexender  
Alexendar  

?

?
二、分析:
?'^Ale|ax.r$'??表示匹配Ale或ax开头的字符串,.表示任一字符。
[html] 
gyj@MYDB> create table gyj_test1 (id int,name varchar2(20));  
  
Table created.  
  
gyj@MYDB> insert into gyj_test1 values(1,'Alex');  
  
1 row created.  
  
gyj@MYDB> insert into gyj_test1 values(2,'Alax');  
  
1 row created.  
  
gyj@MYDB> insert into gyj_test1 values(3,'Alxer');  
  
1 row created.  
  
gyj@MYDB> insert into gyj_test1 values(4,'Alexender');  
  
1 row created.  
  
gyj@MYDB> insert into gyj_test1 values(4,'Alexendar');  
  
1 row created.  
  
gyj@MYDB> commit;  
  
Commit complete.  


[html] 
gyj@MYDB> select * from gyj_test1 where regexp_like(name,'^Ale|ax.r$');  
  
        ID NAME  
---------- --------------------  
         1 Alex  
         4 Alexender  
         4 Alexendar  

?

?
三、以上的SQL语句等价于:
[html] 
gyj@MYDB> select * from gyj_test1 where  regexp_like(name,'^Ale')  
  2   union all  
  3   select * from gyj_test1 where  regexp_like(name,'ax.r$');  
  
        ID NAME  
---------- --------------------  
         1 Alex  
         4 Alexender  
         4 Alexendar  

?

?
?
四、^出现在[]中表示否定,查询的结果集里含有不是中括号里的字母Aleaxr
[html] 
gyj@MYDB> select * from gyj_test1 where  regexp_like(name,'[^Ale|ax.r$]');  
  
        ID NAME  
---------- --------------------  
         4 Alexender  
         4 Alexendar  

?

?
?
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据库Oracle强化练习之多表查询 下一篇windows环境如何恢复(oracle11gg..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·请问c语言刚入门,该 (2025-12-26 10:21:04)
·python 编程怎么定义 (2025-12-26 10:21:01)
·09-指 针 (一)-c语言 (2025-12-26 10:20:58)
·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)