Oracle中REGEXP_LIKE与LIKE的区别?

 我来答
我看的是你看我
推荐于2019-08-26 · TA获得超过2534个赞
知道小有建树答主
回答量:25
采纳率:0%
帮助的人:3749
展开全部
  • Oracle中的Like操作符使用'_'和'%'作为通配符,使用就像这样:

  • SELECT name FROM test_like WHERE name like '_a%'; 

  • 即匹配test_like表name列中第2个字母是a的所有行。但是注意,Oracle匹配时区分大小写的。也就是说上面的查询时无法查询到name='SAas'这行的。

  • Oracle10g中提供的正则表达式功能可以很好的解决这个问题,当然这不是使用正则表达式函数的唯一优点,实际上它比Like操作符强大的多。

  • 正则表达式的语法就不用多说了,现在大多数语言都支持正则表达式了。

  • 下面主要介绍下Oracle中正表达式函数REGEXP_LIKE的使用:

  • REGEXP_LIKE(x, pattern [, match_option])     

  • 当源字符串x匹配正则表达式pattern时,返回true。可以使用match_option修改默认匹配选项,该参数可以被设置为:   

  • - 'c', 说明在进行匹配时区分大小写(默认选项)   

  • - 'i', 说明在进行匹配时不区分大小写   

  • - 'n'   允许使用可以匹配任意字符的操作符(通常是'.')   

  • - 'm', 将x作为一个包含多行的字符串  

  • 举个例子:

  • SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '(a)\1', 'i');  

  • 上面的SQL语句匹配test_reg表中name列含有两个连续字符'a'(不区分大小写)的行,如name='SaAs'。此外,这里我们还使用了正则表达式中的后引用语法——\n表示重复n次上次匹配的内容,此处(a)\1表示匹配两个连续的字符'a'。

  • 需要注意的是,后引用必须使用双括号,否则会出现如下结果:

  • SELECT * FROM test_reg WHERE REGEXP_LIKE(name, 'a\1', 'i')   

  • ORA-12727: 正则表达式中的后向引用无效  

  • 最后一点,不要混淆LIKE操作符的通配符和正则表达式的语法,也就是说不要再正则表达式中使用LIKE操作符中的通配符,如果这样做会得到未知的结果,因为'_'和'%'会被正则表达式当做普通字符进行匹配。

    比如下面这条SQL想要得到name='SaAs'这条记录,但实际的查询结果为空。

  • SQL> SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '^_(a)\1', 'i');   

  • NAME  

  • ----------  实际应该使用:

  • SQL> SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '^.(a)\1', 'i');       

  • NAME  

  • ----------   SaAs  

莱伯泰科
2024-10-28 广告
北京莱伯泰科仪器股份有限公司北京莱伯泰科仪器股份有限公司成立于2002年,是一家专业从事实验分析仪器的研发、生产和销售的科技型公司。莱伯泰科自成立之初便致力于为环境检测、食品安全、疾病控制、半导体检测、生命科学、能源化工、核环保、公安司法、... 点击进入详情页
本回答由莱伯泰科提供
alei65507115
2018-01-09 · TA获得超过6万个赞
知道小有建树答主
回答量:36
采纳率:0%
帮助的人:6763
展开全部
  • REGEXP_LIKE这个是正则表达式函数,需要正则表达式来匹配结果。

  • 如,我要找一个表的列以 0 开始以 80 结束的长度为6位的数据,


    SELECT * FROM staff a WHERE a.staff_code LIKE '0___80';


    SELECT * FROM staff a WHERE REGEXP_LIKE(a.staff_code,'0[0-9]{3}80');

  • Oracle WDP 全称为Oracle Workforce Development Program,是Oracle (甲骨文)公司专门面向学生、个人、在职人员等群体开设的职业发展力课程。Oracle的技术广泛应用于各行各业,其中电信、电力、金融、政府及大量制造业都需要Oracle技术人才,Oracle公司针对职业教育市场在全球推广的项目,其以低廉的成本给这部分人群提供Oracle技术培训,经过系统化的实训,让这部分人群能够迅速掌握Oracle最新的核心技术,并能胜任企业大型数据库管理、维护、开发工作。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式