sql(sql 正则表达式是什么)

sql(sql 正则表达式是什么)

sql 正则表达式是什么呢?不清楚的小伙伴们一起来看看我现在的分享!

正则表达式中的元字符:

元字符

含意

事例

表明要匹配的字符是一个独特字符、变量定义或是后面一种引入。(后引用反复上一次的匹配)

n 匹配换行符 匹配 匹配(匹配(匹配 )^匹配字符串的开始部位^a匹配arwen.但不匹配barwen.

$

匹配字符串的结尾部位en$匹配arwen.但不匹配arwenb.

*

匹配前边的字符0次或多次a*rwen可以匹配rwen或aaarwen. 匹配前面的字符1次或多次a rwen可以匹配arwen或aarwen.但不可以匹配rwen.?匹配前边的字符0次或1次a?rwen可以匹配arwen或rwen.但不可以匹配aarwen.{n}匹配前边的字符正好是n次,在其中n是整数金额ar{2}wen可以匹配arrwen.但不可以匹配arwen或arrrwen.{n,m}

匹配前边的字符最少是n次,较多是m次.假如写出

{n,}表明至少匹配n次.沒有限制.

ar{1,2}wen可以匹配arwen,arrwen.但不匹配awen或arrrwen..点号,匹配除null,自动换行之外的随意单独字符arw.n.可以匹配arwen,arwin.但不可以匹配arween或arwn.(pattern)括号中pattern是一个子正则表达式,匹配特定pattern方式的一个子关系式。实际上括号如同一般语言表达关系式中的括号.有时候多多些括号可提高易读性.此外的用途见下边有关n的叙述.x|y匹配“或”x|y可以匹配x或是y[abc]可以匹配abc中的一切单独字符hello[abc]可以匹配helloa,hellob,helloc[a-z]可以匹配特定范畴内的一切单独字符hell[a-z]可以匹配hello或是hellz[::]特定一个字符类,可以匹配此类中的一切字符[:alphanum:]可以匹配字符0-9、A-Z、a-z[:alpha:]可以匹配字符A-Z、a-z[:blank:]可以匹配空格符或tab键[:digit:]可以匹配数据0-9[:graph:]可以匹配非空字符[:lower:]可以匹配小写字母字母a-z[:print:]与[:graph:]相近,不同点取决于[:print:]包含空格符字符[:punct:]可以匹配标点.,""这些[:space:]可以匹配全部的空字符[:upper:]可以匹配英文大写字母A-Z[:xdigit:]可以匹配十六进制数据0-9、A-F、a-fn这也是对前一次匹配击中的一个后引入,在其中n是一个正整数arw(en)1可以匹配arwenen.留意1前边务必是个加括号的子关系式.

1.regexp_like:

regexp_like(x,pattern[,match_option]),查询x是不是与pattern相匹配,该函数公式还能够给予一个可选择的主要参数match_option字符串表明默认设置的匹配选择项。match_option的选值如下所示:‘c’ 表明在开展匹配时区别大小写字母(缺省值);'i' 表明在开展匹配时不区别大小写字母;'n'(.)点号能表明全部单独字符,包含自动换行(俺还不知道哪些地方有效到自动换行.只了解sql里边可以用chr(10)表明自动换行.'m' 字符串存有自动换行的情况下作为几行解决.那样$就可匹配每排的末尾.否则的话$只匹配字符串最终的部位.

实例:select * from emp where regexp_like(ename,'^a[a-z]*n$');可以搜索ename中以a开头以n末尾的行.例如ename为arwen或arwin或anden.但Arwen不可以被匹配.由于默认设置是区别大小写字母.如果是select * from emp where regexp_like(ename,'^a[a-z]*n$','i')则可以搜索ename为Arwen的行纪录.

2.regexp_instr:

REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用以在x中搜索pattern。回到pattern在x中产生的部位。匹配位置从1逐渐。可以参照字符串函数公式 INSTR(),主要参数有关:'start' 开始查找的部位;'occurrence' 表明应当回到第几次发生pattern的部位;'return_option' 表明应当回到哪些整数金额。若该主要参数为0,则表明要回到的整数金额是x中的一个字符的部位;若该主要参数为非0的整数金额,则表明要回到的整数金额为x中发生在pattern以后 的字符的部位;'match_option' 改动默认设置的匹配设定.与regexp_like里边的同样.

实例:

DECLARE

V_RESULTINTEGER;

BEGIN

SELECTREGEXP_INSTR('hello world','o',1,1,0)INTOV_RESULT

FROMDUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果为5.即字母o第一个次发生的部位

假如regexp_instr('hello world','o',1,1,n)在其中n为除0以外的整数金额.例如1,3.则結果为6.表明第一次发生字母o的后边一个字符的部位.

假如regexp_instr('hello world','o',1,2,0)则結果为9.表明第二次发生字母o的部位.

3.regexp_replace:

REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用以在x中搜索pattern,并将其更换为replae_string。可以参照字符串函数公式 REPLACE(),主要参数同REGEXP_INSTR函数公式

实例:

DECLARE

V_RESULT varchar2(90);

BEGIN

SELECTREGEXP_REPLACE('hello world','o','x',1,1)INTOV_RESULT

FROMDUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果为hellx world.

假如REGEXP_REPLACE('hello world','o','x'),则結果为hellx wxrld.

假如 REGEXP_REPLACE('hello world','o','x',1,2)则結果为hello wxrld.

4.regexp_substr:

REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用以在x中搜索pattern并回到。可以参照字符串函数公式 SUBSTR(),主要参数同REGEXP_INSTR函数公式.

例如:

DECLARE

V_RESULT VARCHAR2(255);

BEGIN

SELECTREGEXP_SUBSTR('hello world','l{2}')INTOV_RESULT

FROMDUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果为ll

查看到匹配的字符串才回到匹配的字符.没查出就回到空.

以上便是我现在的共享了,期待可以作用到大伙儿。

- END -