精华内容
下载资源
问答
  • Oracle中RegExp_Like 正则表达式基本用法

    万次阅读 多人点赞 2019-11-06 10:56:00
    select * from k_micfo where regexp_like(loginid,'36'); if regexp_like(str,'^[0-9\.]+$') --只包含数字0-9,,小数点. --oracle判断字段是否是纯数字 (四种写法结果一样) select * from k_micfo where regex.....
    --基本用法,是否包含某字符串 =like %36%
    select * from k_micfo where  regexp_like(loginid,'36');
    
    if regexp_like(str,'^[0-9\.]+$')  --只包含数字0-9,,小数点.
    
    --oracle判断字段是否是纯数字 (四种写法结果一样)
    select * from k_micfo where regexp_like(loginid,'^[0-9]+[0-9]$');
    select * from k_micfo where regexp_like(loginid,'^[0-9]+$');   --'+' 匹配前面的子表达式一次或多次。
    select * from k_micfo where regexp_like(loginid,'^[[:digit:]]+$');
    select * from k_micfo where  not regexp_like(loginid,'[^0-9]');  --^表示排除
    
    --不是0-9纯数字 (二种写法结果一样)
    select * from k_micfo where  regexp_like(loginid,'[^0-9]');  --^表示排除
    select * from k_micfo where not regexp_like(loginid,'^[[:digit:]]+$');
     
    --判断字段中是否只包含0-9,-字符(二种写法结果一样)
    select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$');  --'|' 指明两项之间的一个选择。相当于or 例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
    select * from k_micfo where  regexp_like(APPLICATION,'[0-9-]');
     
    --判断字段中是否只包含0-9,-字符, 或者空格 (五种写法结果一样)
    select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$') or regexp_like(APPLICATION,'^[ ]$');
    select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$|^[ ]$');  
    select * from k_micfo where regexp_like(APPLICATION,'(^[0-9]|[-]$)|(^[ ]$)'); --'( )' 标记一个子表达式的开始和结束位置
    select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]|[ ]$');
    select * from k_micfo where  regexp_like(APPLICATION,'[0-9- ]'); 

    经测试oracle中的RegExp_Like跟标准正则表达式用法基本一致,”|“ 就是or的意思。

    附:常用实用正则表达式与运算符含义

    ORACLE中的支持正则表达式的函数主要有下面四个:
    1,REGEXP_LIKE :与LIKE的功能相似
    2,REGEXP_INSTR :与INSTR的功能相似
    3,REGEXP_SUBSTR :与SUBSTR的功能相似
    4,REGEXP_REPLACE :与REPLACE的功能相似
    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
    POSIX 正则表达式由标准的元字符(metacharacters)所构成:
    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹
    配 '\n' 或 '\r'。
    '.' 匹配除换行符之外的任何单字符。
    '?' 匹配前面的子表达式零次或一次。
    '+' 匹配前面的子表达式一次或多次。
    '*' 匹配前面的子表达式零次或多次。
    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的
    字符串。
    '( )' 标记一个子表达式的开始和结束位置。
    '[]' 标记一个中括号表达式。
    '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少
    出现m次。
    \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
    字符簇: 
    [[:alpha:]] 任何字母。
    [[:digit:]] 任何数字。
    [[:alnum:]] 任何字母和数字。
    [[:space:]] 任何白字符。
    [[:upper:]] 任何大写字母。
    [[:lower:]] 任何小写字母。
    [[:punct:]] 任何标点符号。
    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
    各种操作符的运算优先级
    \转义符
    (), (?:), (?=), [] 圆括号和方括号
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, anymetacharacter 位置和顺序

    */
    --创建表
    create table fzq
    (
    id varchar(4),
    value varchar(10)
    );
    --数据插入
    insert into fzq values
    ('1','1234560');
    insert into fzq values
    ('2','1234560');
    insert into fzq values
    ('3','1b3b560');
    insert into fzq values
    ('4','abc');
    insert into fzq values
    ('5','abcde');
    insert into fzq values
    ('6','ADREasx');
    insert into fzq values
    ('7','123 45');
    insert into fzq values
    ('8','adc de');
    insert into fzq values
    ('9','adc,.de');
    insert into fzq values
    ('10','1B');
    insert into fzq values
    ('10','abcbvbnb');
    insert into fzq values
    ('11','11114560');
    insert into fzq values
    ('11','11124560');
    --regexp_like
    --查询value中以1开头60结束的记录并且长度是7位
    select * from fzq where value like '1____60';
    select * from fzq where regexp_like(value,'1....60');
    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
    --使用like就不是很好实现了。
    select * from fzq where regexp_like(value,'1[0-9]{4}60');
    -- 也可以这样实现,使用字符集。
    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
    -- 查询value中不是纯数字的记录
    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
    -- 查询value中不包含任何数字的记录。
    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
    --查询以12或者1b开头的记录.不区分大小写。
    select * from fzq where regexp_like(value,'^1[2b]','i');
    --查询以12或者1b开头的记录.区分大小写。
    select * from fzq where regexp_like(value,'^1[2B]');
    -- 查询数据中包含空白的记录。
    select * from fzq where regexp_like(value,'[[:space:]]');
    --查询所有包含小写字母或者数字的记录。
    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
    --查询任何包含标点符号的记录。
    select * from fzq where regexp_like(value,'[[:punct:]]');

     

    正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

    用户名:/^[a-z0-9_-]{3,16}$/

    密码:/^[a-z0-9_-]{6,18}$/

    十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/

    电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

    URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

    IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

    HTML 标签:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/

    Unicode编码中的汉字范围:/^[u4e00-u9fa5],{0,}$/

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]
    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

    匹配空白行的正则表达式:\n\s*\r
    评注:可以用来删除空白行

    匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? />
    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

    匹配首尾空白字符的正则表达式:^\s*|\s*$
    评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
    评注:表单验证时很实用

    匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
    评注:网上流传的版本功能很有限,上面这个基本可以满足需求

    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    评注:表单验证时很实用

    匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
    评注:匹配形式如 0511-4405222 或 021-87888822

    匹配腾讯QQ号:[1-9][0-9]{4,}
    评注:腾讯QQ号从10000开始

    匹配中国大陆邮政编码:[1-9]\d{5}(?!\d)
    评注:中国大陆邮政编码为6位数字

    匹配身份证:\d{15}|\d{18}
    评注:中国大陆的身份证为15位或18位

    匹配ip地址:\d+\.\d+\.\d+\.\d+
    评注:提取ip地址时有用

    匹配特定数字:
    ^[1-9]\d*$    //匹配正整数
    ^-[1-9]\d*$  //匹配负整数
    ^-?[1-9]\d*$  //匹配整数
    ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
    ^-[1-9]\d*|0$  //匹配非正整数(负整数 + 0)
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$  //匹配正浮点数
    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$  //匹配非负浮点数(正浮点数 + 0)
    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
    评注:处理大量数据时有用,具体应用时注意修正

    匹配特定字符串:
    ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
    ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
    ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
    ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
    ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串

    去除精度纬度中非浮点数

    select jd,wd from xx_xa_xsczaqpc t where t.id not in  (

    select id from xx_xa_xsczaqpc where regexp_like(jd,'^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$')) ;

    是双小数点的数

    select xx_jbxx_id,jd,wd from xx_xa_xsczaqpc t where regexp_like(jd,'^[1-9]\d*\.\d*\.\d*[1-9]\d*$')

    展开全文
  • oracle正则表达式regexp_like用法详解更新时间:2013年06月13日 17:42:05 作者:本篇文章是对oracle正则表达式regexp_like用法进行了详细的分析介绍,需要的朋友参考下/*ORACLE中的支持正则表达式的函数主要有...

    oracle正则表达式regexp_like的用法详解

    更新时间:2013年06月13日 17:42:05   作者:

    本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介绍,需要的朋友参考下

    /*

    ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似

    2,REGEXP_INSTR :与INSTR的功能相似

    3,REGEXP_SUBSTR :与SUBSTR的功能相似

    4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

    POSIX 正则表达式由标准的元字符(metacharacters)所构成:

    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹

    配 '/n' 或 '/r'。

    '.' 匹配除换行符之外的任何单字符。

    '?' 匹配前面的子表达式零次或一次。

    '+' 匹配前面的子表达式一次或多次。

    '*' 匹配前面的子表达式零次或多次。

    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的

    字符串。

    '( )' 标记一个子表达式的开始和结束位置。

    '[]' 标记一个中括号表达式。

    '{m,n}' 一个精确地出现次数范围,m=

    出现m次。

    /num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

    字符簇:

    [[:alpha:]] 任何字母。

    [[:digit:]] 任何数字。

    [[:alnum:]] 任何字母和数字。

    [[:space:]] 任何白字符。

    [[:upper:]] 任何大写字母。

    [[:lower:]] 任何小写字母。

    [[:punct:]] 任何标点符号。

    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

    各种操作符的运算优先级

    /转义符

    (), (?:), (?=), [] 圆括号和方括号

    *, +, ?, {n}, {n,}, {n,m} 限定符

    ^, $, anymetacharacter 位置和顺序

    */

    --创建表create table fzq

    (

    id varchar(4),

    value varchar(10)

    );

    --数据插入insert into fzq values

    ('1','1234560');

    insert into fzq values

    ('2','1234560');

    insert into fzq values

    ('3','1b3b560');

    insert into fzq values

    ('4','abc');

    insert into fzq values

    ('5','abcde');

    insert into fzq values

    ('6','ADREasx');

    insert into fzq values

    ('7','123  45');

    insert into fzq values

    ('8','adc  de');

    insert into fzq values

    ('9','adc,.de');

    insert into fzq values

    ('10','1B');

    insert into fzq values

    ('10','abcbvbnb');

    insert into fzq values

    ('11','11114560');

    insert into fzq values

    ('11','11124560');

    --regexp_like

    --查询value中以1开头60结束的记录并且长度是7位

    select * from fzq where value like '1____60';

    select * from fzq where regexp_like(value,'1....60');

    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。

    --使用like就不是很好实现了。

    select * from fzq where regexp_like(value,'1[0-9]{4}60');

    -- 也可以这样实现,使用字符集。

    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');

    -- 查询value中不是纯数字的记录

    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');

    -- 查询value中不包含任何数字的记录。

    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');

    --查询以12或者1b开头的记录.不区分大小写。

    select * from fzq where regexp_like(value,'^1[2b]','i');

    --查询以12或者1b开头的记录.区分大小写。

    select * from fzq where regexp_like(value,'^1[2B]');

    -- 查询数据中包含空白的记录。

    select * from fzq where regexp_like(value,'[[:space:]]');

    --查询所有包含小写字母或者数字的记录。

    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');

    --查询任何包含标点符号的记录。

    select * from fzq where regexp_like(value,'[[:punct:]]');

    /*

    理解它的语法就可以了。其它的函数用法类似。

    */

    相关文章

    最近有朋友在群里问如何完全卸载ORACLE 10g,这里简单的整理下,方便需要的朋友2012-06-06

    这篇文章主要介绍了Linux环境下Oracle安装参数设置方法,本文通过代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下2019-06-06

    这篇文章主要介绍了Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-07-07

    这篇文章主要介绍了Oracle插入日期数据常见的2个问题和解决方法,一个是提示无效的月份问题,一个是日期插入格式问题

    ,需要的朋友可以参考下2014-07-07

    表及索引的存储容量估算是根据其记录长度及估算的最大记录数确定的。在容量计算中考虑了数据块的头开销及记录和字段的头开销等等。表及索引的initial和next存储参数一般设为相等,pctincrease设为0。2009-06-06

    本篇文章是对Oracle数据库查看一个进程是如何执行相关的实际SQL语句进行了详细的分析介绍,需要的朋友参考下2013-05-05

    本节主要介绍了oracle 实际值超过数据库某个字段指定长度报错解决方法,需要的朋友可以参考下2014-07-07

    这篇文章主要介绍了Oracle存储过程游标用法,结合实例形式分析了游标的使用步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下2016-06-06

    这篇文章主要分享了oracle数据库常用的99条查询语句,学习oracle的朋友可以参考下2013-08-08

    RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息,但最近在使用中就遇到了一个问题,下面这篇文章主要给大家介绍了关于解决Oracle RMAN删除归档日志不释放问题的方法,需要的朋友可以参考下。2017-07-07

    最新评论

    展开全文
  • /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在...

    /*
    ORACLE中的支持正则表达式的函数主要有下面四个:
    1,REGEXP_LIKE :与LIKE的功能相似
    2,REGEXP_INSTR :与INSTR的功能相似
    3,REGEXP_SUBSTR :与SUBSTR的功能相似
    4,REGEXP_REPLACE :与REPLACE的功能相似
    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
    POSIX 正则表达式由标准的元字符(metacharacters)所构成:
    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹
    配 '/n' 或 '/r'。
    '.' 匹配除换行符之外的任何单字符。
    '?' 匹配前面的子表达式零次或一次。
    '+' 匹配前面的子表达式一次或多次。
    '*' 匹配前面的子表达式零次或多次。
    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的
    字符串。
    '( )' 标记一个子表达式的开始和结束位置。
    '[]' 标记一个中括号表达式。
    '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少
    出现m次。
    /num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
    字符簇:
    [[:alpha:]] 任何字母。
    [[:digit:]] 任何数字。
    [[:alnum:]] 任何字母和数字。
    [[:space:]] 任何白字符。
    [[:upper:]] 任何大写字母。
    [[:lower:]] 任何小写字母。
    [[:punct:]] 任何标点符号。
    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
    各种操作符的运算优先级
    /转义符
    (), (?:), (?=), [] 圆括号和方括号
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, anymetacharacter 位置和顺序
    |
    */
    --创建表
    create table fzq
    (
      id varchar(4),
      value varchar(10)
    );
    --数据插入
    insert into fzq values
    ('1','1234560');
    insert into fzq values
    ('2','1234560');
    insert into fzq values
    ('3','1b3b560');
    insert into fzq values
    ('4','abc');
    insert into fzq values
    ('5','abcde');
    insert into fzq values
    ('6','ADREasx');
    insert into fzq values
    ('7','123  45');
    insert into fzq values
    ('8','adc  de');
    insert into fzq values
    ('9','adc,.de');
    insert into fzq values
    ('10','1B');
    insert into fzq values
    ('10','abcbvbnb');
    insert into fzq values
    ('11','11114560');
    insert into fzq values
    ('11','11124560');
    --regexp_like
    --查询value中以1开头60结束的记录并且长度是7位
    select * from fzq where value like '1____60';
    select * from fzq where regexp_like(value,'1....60');
    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
    --使用like就不是很好实现了。
    select * from fzq where regexp_like(value,'1[0-9]{4}60');
    -- 也可以这样实现,使用字符集。
    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
    -- 查询value中不是纯数字的记录
    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
    -- 查询value中不包含任何数字的记录。
    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
    --查询以12或者1b开头的记录.不区分大小写。
    select * from fzq where regexp_like(value,'^1[2b]','i');
    --查询以12或者1b开头的记录.区分大小写。
    select * from fzq where regexp_like(value,'^1[2B]');
    -- 查询数据中包含空白的记录。
    select * from fzq where regexp_like(value,'[[:space:]]');
    --查询所有包含小写字母或者数字的记录。
    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
    --查询任何包含标点符号的记录。
    select * from fzq where regexp_like(value,'[[:punct:]]');
    /*
    理解它的语法就可以了。其它的函数用法类似。
    */

    转载于:https://www.cnblogs.com/myitworld/archive/2011/02/22/2214803.html

    展开全文
  • ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能...

    ORACLE中的支持正则表达式的函数主要有下面四个:
    1,REGEXP_LIKE :与LIKE的功能相似
    2,REGEXP_INSTR :与INSTR的功能相似
    3,REGEXP_SUBSTR :与SUBSTR的功能相似
    4,REGEXP_REPLACE :与REPLACE的功能相似
    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
    POSIX 正则表达式由标准的元字符(metacharacters)所构成:
    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹
    配 '\n' 或 '\r'。
    '.' 匹配除换行符之外的任何单字符。
    '?' 匹配前面的子表达式零次或一次。
    '+' 匹配前面的子表达式一次或多次。
    '*' 匹配前面的子表达式零次或多次。
    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的
    字符串。
    '( )' 标记一个子表达式的开始和结束位置。
    '[]' 标记一个中括号表达式。
    '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少
    出现m次。
    \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
    字符簇: 
    [[:alpha:]] 任何字母。
    [[:digit:]] 任何数字。
    [[:alnum:]] 任何字母和数字。
    [[:space:]] 任何白字符。
    [[:upper:]] 任何大写字母。
    [[:lower:]] 任何小写字母。
    [[:punct:]] 任何标点符号。
    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
    各种操作符的运算优先级
    \转义符
    (), (?:), (?=), [] 圆括号和方括号
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, anymetacharacter 位置和顺序

    */
    --创建表
    create table fzq
    (
    id varchar(4),
    value varchar(10)
    );
    --数据插入
    insert into fzq values
    ('1','1234560');
    insert into fzq values
    ('2','1234560');
    insert into fzq values
    ('3','1b3b560');
    insert into fzq values
    ('4','abc');
    insert into fzq values
    ('5','abcde');
    insert into fzq values
    ('6','ADREasx');
    insert into fzq values
    ('7','123 45');
    insert into fzq values
    ('8','adc de');
    insert into fzq values
    ('9','adc,.de');
    insert into fzq values
    ('10','1B');
    insert into fzq values
    ('10','abcbvbnb');
    insert into fzq values
    ('11','11114560');
    insert into fzq values
    ('11','11124560');
    --regexp_like
    --查询value中以1开头60结束的记录并且长度是7位
    select * from fzq where value like '1____60';
    select * from fzq where regexp_like(value,'1....60');
    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
    --使用like就不是很好实现了。
    select * from fzq where regexp_like(value,'1[0-9]{4}60');
    -- 也可以这样实现,使用字符集。
    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
    -- 查询value中不是纯数字的记录
    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
    -- 查询value中不包含任何数字的记录。
    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
    --查询以12或者1b开头的记录.不区分大小写。
    select * from fzq where regexp_like(value,'^1[2b]','i');
    --查询以12或者1b开头的记录.区分大小写。
    select * from fzq where regexp_like(value,'^1[2B]');
    -- 查询数据中包含空白的记录。
    select * from fzq where regexp_like(value,'[[:space:]]');
    --查询所有包含小写字母或者数字的记录。
    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
    --查询任何包含标点符号的记录。
    select * from fzq where regexp_like(value,'[[:punct:]]');

    例子:判断姓名是否为空,少于两个字符,包含数字和字母

    create or replace
    FUNCTION CheckName(NameStr in VARCHAR2) RETURN integer
    As
    BEGIN
    --符合返回1,不符合返回0
       if(NameStr is null or length(NameStr)<2) then
          return 0;
       else
          if(NameStr like '%未取名%') then
           RETURN 0;
           end if;
           if regexp_like(NameStr,'^([a-z]+|[0-9]+|[A-Z]+)$') then
           return 0;
           end if; 
           return 1;      
       end if;
    END CheckName;



    摘自:https://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29802484/viewspace-2150885/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/29802484/viewspace-2150885/

    展开全文
  • ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法...
  • like常用用法:1.%代表任意数量的某一或某些字符。select * from tmp_table t where t.name like '%Bob'(查询tmp_table表name列最后三位是BOb的记录,eg:BBob)select * from tmp_table t where t.name like 'Bob%'...
  • 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE、INSTR、...
  • oracle 10g正则表达式REGEXP_LIKE用法

    千次阅读 2017-06-19 16:53:31
    oracle 10g正则表达式REGEXP_LIKE用法 ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似
  • ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法...
  • /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在...
  • ORACLE中的支持正则表达式的函数主要有下面四个: ...1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功...
  • ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法...
  • 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE、INSTR、...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 154
精华内容 61
关键字:

oracle中regexp_like用法