-正则元字符串,    -正则元字符串

    -SQL语句中使用正则匹配,    -SQL语句中使用正则匹配

上学目的

学学指标

    -正则元字符串

    -正则元字符串

    -SQL语句中行使正则搜索

    -SQL语句中接纳正则搜索

    -SQL语句中应用正则匹配

    -SQL语句中采纳正则匹配

    -SQL语句中动用正则替代字符串

    -SQL语句中使用正则替代字符串

 

 

正则表明式

正则表达式

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

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

  
 达成了符合UNIX可移植操作系统(POSIX)标准,由电气和电子工程师组织(IEEE)控制,ASCII数据匹配的语义和语法。

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

    正则表明式是壹种描述不难和复杂的查找和操作方式的法子。

    正则表明式是壹种描述简单和复杂的摸索和操作格局的秘籍。

 

 

正则(POSIX )元字符

正则(POSIX )元字符

    ‘*’ 匹配前边的表明式二遍或频仍

    ‘*’ 匹配前边的表明式贰回或频繁

    ‘|’ 指明两项之间选用那一个

    ‘|’ 指明两项之间接选举拔那个

   
‘^’ 匹配输入字符串的起来地方,注意,即使在方括号表明式中选用^,此时它表示不接受该字符集。

   
‘^’ 匹配输入字符串的开始地方,注意,假诺在方括号表明式中央银行使^,此时它象征不收受该字符集。

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

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

    ‘{m}’  表示出现四回

    ‘{m}’  表示出现一回

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

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

    ‘\’ 
有肆种差异含义,’\’反斜杠本身、\num 匹配的引用、\n转义符和哪些都不是。

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

    ‘+’  匹配前边的子表明式3次或频繁

    ‘+’  匹配前面的子表明式一次或频仍

    ‘?’ 匹配后面包车型大巴子表明式零次或叁回

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

    ‘.’ 匹配除换行符之外的其它单字符

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

    ‘()’ 标记三个子表明式的始发和完工地点

    ‘()’ 标记2个子表达式的发端和甘休地点

     ‘[::]’ 表示是3个字符簇 :

     ‘[::]’ 表示是多个字符簇 :

            [[:alpha:]] 任何字母

            [[:alpha:]] 任何字母

            [[:digit:]] 任何数字

            [[:digit:]] 任何数字

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

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

            [[:space:]] 空白字符

            [[:space:]] 空白字符

            [[:upper:]] 大写字母

            [[:upper:]] 大写字母

            [[:lowe:]] 小写字母

            [[:lowe:]] 小写字母

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

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

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

            [[:xdigit:]] 任何16进制的数字,也正是[0-9a-fA-F]

           

           

    正则表达式函数

    正则表明式函数

            REGEXP_LIKE 与LIKE的作用相似,匹配相似字符串

            REGEXP_LIKE 与LIKE的职能相似,匹配相似字符串

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

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

            REGEXP_INSTHaval 与INST大切诺基成效相似,标识字符下标

            REGEXP_INST奥迪Q5 与INST奥迪Q7效率相似,标识字符下标

            REGEXP_SUBSTXC90 与SUBT途达作用相似,截取钦命地点字符串

            REGEXP_SUBSTWrangler 与SUBT瑞虎功效相似,截取钦定地点字符串

            REGEXP_COUNT 与COUNT相似,总计有个别样式反复现身的次数

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

 

 

            它们在用法上与Oracle
SQL函数LIKE、INSTRAV四、SUBST锐界、REPLACE用法相同,不过它们采纳POSIX正则表达式替代了老的百分号(%)和通配符(_)字符。

            它们在用法上与Oracle
SQL函数LIKE、INST福睿斯、SUBSTPAJERO、REPLACE用法相同,不过它们利用POSIX正则表明式替代了老的百分号(%)和通配符(_)字符。

 

 

 

 

        REGEXP_LIKE (srcstr,pattern [,match_option])

        REGEXP_LIKE (srcstr,pattern [,match_option])

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

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

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

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

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

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

   

   

例子一
求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.
例子一
求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.

 

 

读书总计:

学学计算:

    一.正则表明式的效果及oracle 拾g始于扶助功用并依照(POSIX)标准

    壹.正则表明式的意义及oracle 拾g始发协助功效并依照(POSIX)标准

    二.正则表明式所需的元操作字符

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

    三.正则表明式常见的多少个函数并且实施要是应用

    叁.正则表明式常见的多少个函数并且实施假设运用