文档首页/ 数据仓库服务 DWS/ SQL语法参考/ SQL语法参考(9.1.0.x)/ 函数和操作符/ 字符串处理函数和操作符/ 判断某个字符串是否符合某种匹配模式(字符串相关的模式匹配函数)
更新时间:2025-11-19 GMT+08:00

判断某个字符串是否符合某种匹配模式(字符串相关的模式匹配函数)

什么是模式匹配函数

模式匹配函数(LIKE)是一种字符串比较函数,用于判断目标字符串是否符合指定的模式规则,返回布尔值(true/false,示例中用 t/f 表示)。

它与操作符=的区别如下:

  • =:严格匹配整个字符串(字符数、内容完全一致)。
  • LIKE:模糊匹配(通过通配符忽略部分字符差异,只关注「关键模式」)。
适用场景:这类函数主要用于模糊查询,例如:
  • 查找姓名中包含“张”的用户:name LIKE '%张%';
  • 查找手机号以“138”开头的用户:phone LIKE '138%';
  • 查找邮箱后缀为@abc.com且用户名长度为5位的用户:email LIKE '_____@abc.com'(5 个下划线)。

regexp_like(text,text,text)

描述:正则表达式的模式匹配函数。

返回值类型:bool

示例:

1
2
3
4
5
SELECT regexp_like('str','[ac]');
 regexp_like
-------------
 f
(1 row)

string [NOT] LIKE pattern [ESCAPE escape-character]

描述:模式匹配函数。

如果pattern不包含百分号或者下划线,该模式只代表它本身,这时候LIKE的行为就像等号操作符。在pattern里的下划线(_)匹配任何单个字符;而一个百分号(%)匹配零或多个任何字符。

要匹配下划线或者百分号本身,在pattern里相应的字符必须前导逃逸字符。缺省的逃逸字符是反斜杠,但是用户可以用ESCAPE子句指定一个。要匹配逃逸字符本身,写两个逃逸字符。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT;
 result
--------
 t
(1 row)
1
2
3
4
5
SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT;
 result
--------
 f
(1 row)
1
2
3
4
5
SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT;
 result
--------
 t
(1 row)

REGEXP_LIKE(source_string, pattern [, match_parameter])

描述:正则表达式的模式匹配函数。

source_string为源字符串,pattern为正则表达式匹配模式。 match_parameter为匹配选项,可取值为:

  • 'i':大小写不敏感。
  • 'c':大小写敏感。
  • 'n':允许正则表达式元字符“.”匹配换行符。
  • 'm':将source_string视为多行。

若忽略match_parameter选项,默认为大小写敏感,“.”不匹配换行符,source_string视为单行。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT regexp_like('ABC', '[A-Z]');
 regexp_like
-------------
 t
(1 row)
1
2
3
4
5
SELECT regexp_like('ABC', '[D-Z]');
 regexp_like
-------------
 f
(1 row)
1
2
3
4
5
SELECT regexp_like('abc', '[A-Z]','i');
 regexp_like
-------------
 t
(1 row)
1
2
3
4
5
SELECT regexp_like('abc', '[A-Z]');
 regexp_like
-------------
 f
(1 row)