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
查看到匹配的字符串才回到匹配的字符.没查出就回到空.
以上便是我现在的共享了,期待可以作用到大伙儿 。
【sql 正则表达式是什么 sql】