REGEXP_CONTAINS函数用于判断一个字符串是否包含与指定字符串或正则表达式匹配的内容。
命令格式
BOOLEAN REGEXP_CONTAINS(STRING <source>, STRING <pattern>)
参数说明
source:必填。STRING类型。被匹配的字符串。
pattern:必填。STRING类型常量或正则表达式。用于匹配的子字符串或正则表达式。更多正则表达式编写规范,请参见正则表达式规范。
说明您可以使用
^
(行首)和$
(行尾)搜索完整匹配项。由于正则表达式中的运算符存在优先级,建议使用括号包裹^
和$
之间的所有内容,以确保匹配逻辑正确。
返回值说明
返回BOOLEAN类型。返回规则如下:
若source值包含与pattern匹配的内容,返回true;反之,返回false。
若source或pattern为非STRING类型或无效,返回报错。
若source或pattern值为NULL,返回NULL。
若pattern为空字符串,返回true。
使用示例
示例1:检查电子邮件是否有效。
SELECT 'foo@example.com' AS email, REGEXP_CONTAINS('foo@example.com', '@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+') AS is_valid;
返回结果如下:
+-----------------+----------+ | email | is_valid | +-----------------+----------+ | foo@example.com | true | +-----------------+----------+
示例2:使用
^
(行首)和$
(行尾)搜索完整匹配项。由于正则表达式中的运算符存在优先级,建议使用括号包裹
^
和$
之间的所有内容,以确保匹配逻辑正确。正则表达式未使用括号,不影响结果。
SELECT 'a@foo.com' AS email, REGEXP_CONTAINS('a@foo.com', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address, REGEXP_CONTAINS('a@foo.com', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;
返回结果如下:
+------------+---------------------+---------------------+ | email | valid_email_address | without_parentheses | +------------+---------------------+---------------------+ | a@foo.com | true | true | +------------+---------------------+---------------------+
正则表达式未使用括号,影响输出结果。
SELECT '!b@bar.org' AS email, REGEXP_CONTAINS('!b@bar.org', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address, REGEXP_CONTAINS('!b@bar.org', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;
返回结果如下:
+------------+---------------------+---------------------+ | email | valid_email_address | without_parentheses | +------------+---------------------+---------------------+ | !b@bar.org | false | true | +------------+---------------------+---------------------+
示例3:当regexp为空字符串时,返回true。
--返回true WITH dummy AS(SELECT '' AS PATTERN) SELECT REGEXP_CONTAINS('ABC',PATTERN) FROM dummy;
相关函数
REGEXP_CONTAINS函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数。
该文章对您有帮助吗?