(Les19 Regular expression support)[20180106]

例子一
求last_name中含有G[一个字符]g的名称
select * from employees
where  regexp_like (last_name,'(G.g){1}')  ;
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Gaga                         203        200

例子二
insert into employees values('Regexp02_test',208,200);
求出last_name名称中含有数字的
select *
from employees
where regexp_instr(last_name,'[[:digit:]]')>1 ;

LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Regexp02_test                208        200

例子三
截取last_name数值之前的字符串
col last_name format a20
select regexp_substr(last_name,'[[:alpha:]]*') last_name,employee_id,manager_id
from employees;

LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Dereck                       100          1
Gary                         200        100
Klec                         300        100
Gaga                         203        200
Wendy                        204        200
Xi                           205        200
Tinan                        206        200
Ling                         207        200
Owen                         301        300
Yi                           302        300
Regexp                       208        200
11 rows selected.

例子四
将last_name中的数值替换成**号
col last_name format a20
select regexp_replace(last_name,'[[:digit:]]','*') last_name,employee_id,manager_id
from employees;
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Dereck                       100          1
Gary                         200        100
Klec                         300        100
Gaga                         203        200
Wendy                        204        200
Xi                           205        200
Tinan                        206        200
Ling                         207        200
Owen                         301        300
Yi                           302        300
Regexp**_test                208        200

11 rows selected.

例子五
计算last_name中数值出现的次数
col last_name format a20
select last_name,regexp_count(last_name,'[[:digit:]]') t_count,employee_id,manager_id
from employees;

LAST_NAME               T_COUNT EMPLOYEE_ID MANAGER_ID
-------------------- ---------- ----------- ----------
Dereck                        0         100          1
Gary                          0         200        100
Klec                          0         300        100
Gaga                          0         203        200
Wendy                         0         204        200
Xi                            0         205        200
Tinan                         0         206        200
Ling                          0         207        200
Owen                          0         301        300
Yi                            0         302        300
Regexp02_test                 2         208        200

11 rows selected.

        REGEXP_SUBSTR (srcstr,pattern [,position [,occurrence
[,match_option]]])

    ‘[]’ 标记一个中括号表明式

   

    正则表明式函数

            [[:upper:]]Oracle, 大写字母

    ‘*’ 匹配后边的表明式两回或频繁

    3.正则表明式常见的多少个函数并且实施如若利用

        REGEXP_INSTR (srcstr,pattern [,position [,occurrence
[,return_option [,match_option]]]])

            REGEXP_INSTR 与INSTR效能相似,标识字符下标

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

            REGEXP_LIKE 与LIKE的效应相似,匹配相似字符串

   
‘^’ 匹配输入字符串的上马地点,注意,倘使在方括号表达式中拔取^,此时它意味着不收受该字符集。

    ‘+’  匹配前边的子表达式四回或频繁

           

    -SQL语句中采纳正则替代字符串

    -SQL语句中行使正则搜索

            REGEXP_REPLACE 与REPLACE功用相似,替换字符串

        REGEXP_REPLACE (srcstr,pattern [,replacestr [,position [,
occurrence [,match_option]]]])

            [[:lowe:]] 小写字母

            [[:digit:]] 任何数字

    ‘\’ 
有4种不同含义,’\’反斜杠自身、\num 匹配的引用、\n转义符和怎么都不是。

 

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

正则(POSIX )元字符

 

    -SQL语句中使用正则匹配

 

    -正则元字符串

            REGEXP_COUNT 与COUNT相似,总计某个样式反复出现的次数

    2.正则表达式所需的元操作字符

正则表明式

 

学习总计:

            它们在用法上与Oracle
SQL函数LIKE、INSTR、SUBSTR、REPLACE用法相同,然则它们采纳POSIX正则表明式替代了老的百分号(%)和通配符(_)字符。

    1.正则表明式的成效及oracle 10g开端协助功能并依据(POSIX)标准

        REGEXP_LIKE (srcstr,pattern [,match_option])

     ‘[::]’ 代表是一个字符簇 :

    ‘?’ 匹配前边的子表明式零次或两回

  
 实现了适合UNIX可移植操作系统(POSIX)标准,由电气和电子工程师协会(IEEE)控制,ASCII数据匹配的语义和语法。

    ‘.’ 匹配除换行符之外的别样单字符

    Oracle数据库10g引入对正则表明式的支撑。

    ‘|’ 指明两项之间选用这多少个

            REGEXP_SUBSTR 与SUBTR功效相似,截取指定地方字符串

 

    ‘{m,n}’ 表示出现次数的范围值 m<=出现次数<=n

    ‘()’ 标记一个子表达式的上马和终结地点

    正则表明式是一种描述简单和复杂性的检索和操作格局的艺术。

            [[:space:]] 空白字符

    ‘{m}’  表示出现三次

            [[:alpha:]] 任何字母

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

上学目的

 

相关文章