#REGEXP_LIKE
REGEXP_LIKE为正则表达式函数,其功能与LIKE语法相似,但与LIKE只能使用'%'和'_'通配符相比,REGEXP_LIKE函数的regexp参数可使用正则表达式,对expr表示的字符串进行正则匹配,匹配成功时返回TRUE,否则返回FALSE。
expr的值须为字符型,或可转换为字符型的其他类型。当expr的值为NULL时,函数返回NULL。
expr不支持32000字节以上的LOB类型数据。
函数使用输入字符集定义的字符计算字符串(支持UTF-8)。
regexp
指定一个RegExp,长度不超过512字节,可为NULL,此时函数返回NULL。
match_para
YashanDB支持在进行正则匹配时指定如下匹配参数:
- 'i':大小写不敏感。
- 'c':大小写敏感,默认为此值。
- 'n':允许句点(.)匹配任何字符,包括换行符。如果省略此参数,则句点与换行符不匹配。
- 'm':将字符串视为多行,将^和$分别解释为字符串中任意行的开始和结束,而不仅仅是整个字符串的开始或结束。如果省略此参数,则将字符串视为一行。
- 'x':忽略空白和#注释。默认情况下,空白字符与其自身匹配。
match_para参数可以不指定或指定为NULL(均使用默认值),如指定了除上述之外的其他参数,则函数返回YAS-04363错误。
示例
SELECT REGEXP_LIKE('aa\naa','^aa$','i') reg1,
REGEXP_LIKE('aa','^aa$','i') reg2 FROM DUAL;
REG1 REG2
-------------------- --------------------
false true
SELECT REGEXP_LIKE('AA','A.A') reg1,
REGEXP_LIKE('AA','A.A','n') reg2 FROM DUAL;
REG1 REG2
-------------------- --------------------
false false
SELECT REGEXP_LIKE('-654196584','^-[0-9]*[1-9][0-9]*$') reg1,
REGEXP_LIKE('654196584','^[0-9]*[1-9][0-9]*$','m') reg2 FROM DUAL;
REG1 REG2
-------------------- --------------------
true true