like效率 regexp_Oracle中REGEXP_LIKE与LIKE的区别

展开全部

LIKE  是 标准的 SQL 处理。e68a8462616964757a686964616f31333332623864 SQL Server, DB2 , MySQL 等大部分数据库, 都支持的写法。

REGEXP_LIKE 是 Oracle 特有的, 正则表达式的 LIKE 的处理。

下面是一些  REGEXP_LIKE  使用的例子测试表

CREATE TABLE test_reg_like ( a varchar(20) );

INSERT INTO test_reg_like VALUES('ABC');

INSERT INTO test_reg_like VALUES('A12');

INSERT INTO test_reg_like VALUES('12a12');3个参数

第一个是输入的字符串

第二个是正则表达式

第三个是取值范围:

i:大小写不敏感;

c:大小写敏感;

n:点号 . 不匹配换行符号;

m:多行模式;

x:扩展模式,忽略正则表达式中的空白字符。

全部测试数据

SQL> SELECT * FROM test_reg_like;

A

----------------------------------------

ABC

A12

12a12

匹配字母A的

SQL> SELECT

2    *

3  FROM

4    test_reg_like

5  WHERE

6    REGEXP_LIKE(a, 'A');

A

----------------------------------------

ABC

A12

匹配字母A的 (大小写不敏感)

SQL> SELECT

2    *

3  FROM

4    test_reg_like

5  WHERE

6    REGEXP_LIKE(a, 'A', 'i');

A

----------------------------------------

ABC

A12

12a12

匹配字母A 后面跟1个或多个数字的 (大小写不敏感)

SQL> SELECT

2    *

3  FROM

4    test_reg_like

5  WHERE

6    REGEXP_LIKE(a, 'A\d+', 'i');

A

----------------------------------------

A12

12a12

匹配字母A开头,数字结尾的

SQL> SELECT

2    *

3  FROM

4    test_reg_like

5  WHERE

6    REGEXP_LIKE(a, '^A.+\d$');

A

----------------------------------------

A12

CREATE TABLE test_phone (

phone_number  varchar(20)

);

INSERT INTO test_phone

SELECT '13812345678' FROM  dual  UNION ALL

SELECT '13812345566' FROM  dual  UNION ALL

SELECT '13812345656' FROM  dual  UNION ALL

SELECT '13812345556' FROM  dual  UNION ALL

SELECT '13812346666' FROM  dual  UNION ALL

SELECT '13855661234' FROM  dual  UNION ALL

SELECT '13856561234' FROM  dual  UNION ALL

SELECT '13855561234' FROM  dual  UNION ALL

SELECT '13866661234' FROM  dual;

--  AAAA 结尾的

SELECT

*

FROM

test_phone

WHERE

REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER

----------------------------------------

13812346666

--  AABB 结尾的

SELECT

*

FROM

test_phone

WHERE

REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1([^\1])\2')

AND NOT REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER

----------------------------------------

13812345656

--  ABAB 结尾的

SELECT

*

FROM

test_phone

WHERE

REGEXP_LIKE(REVERSE(phone_number), '^(\d)(\d)\1\2')

AND NOT REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER

----------------------------------------

13812345656

已标记关键词 清除标记
<p> <b><span style="font-size:14px;"></span><span style="font-size:14px;background-color:#FFE500;">【Java面试宝典】</span></b><br /> <span style="font-size:14px;">1、68讲视频课,500道大厂Java常见面试题+100个Java面试技巧与答题公式+10万字核心知识解析+授课老师1对1面试指导+无限次回放</span><br /> <span style="font-size:14px;">2、这门课程基于胡书敏老师8年Java面试经验,调研近百家互联网公司及面试官的问题打造而成,从筛选简历和面试官角度,给出能帮助候选人能面试成功的面试技巧。</span><br /> <span style="font-size:14px;">3、通过学习这门课程,你能系统掌握Java核心、数据库、Java框架、分布式组件、Java简历准备、面试实战技巧等面试必考知识点。</span><br /> <span style="font-size:14px;">4、知识点+项目经验案例,每一个都能做为面试的作品展现。</span><br /> <span style="font-size:14px;">5、本课程已经在线下的培训课程经过实际检验,老师每次培训结束后,都能帮助同学们运用面试技巧,成功找到更好的工作。</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【超人气讲师】</b></span><br /> <span style="font-size:14px;">胡书敏 | 10年大厂工作经验,8年Java面试官经验,5年线下Java职业培训经验,5年架构师经验</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【报名须知】</b></span><br /> <span style="font-size:14px;">上课模式是什么?</span><br /> <span style="font-size:14px;">课程采取录播模式,课程永久有效,可无限次观看</span><br /> <span style="font-size:14px;">课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化</span><br /> <br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><strong>如何开始学习?</strong></span><br /> <span style="font-size:14px;">PC端:报名成功后可以直接进入课程学习</span><br /> <span style="font-size:14px;">移动端:<span style="font-family:Helvetica;font-size:14px;background-color:#FFFFFF;">CSDN 学院APP(注意不是CSDN APP哦)</span></span> </p>
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页