
# 判断某个字符串是否符合某种匹配模式(字符串相关的模式匹配函数)
#### 什么是模式匹配函数
**模式匹配函数（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
示例：
```
SELECT regexp_like('str','[ac]');
 regexp_like
-------------
 f
(1 row)
```
#### string \[NOT\] LIKE pattern \[ESCAPE escape-character\]
描述：模式匹配函数。
如果pattern不包含百分号或者下划线，该模式只代表它本身，这时候LIKE的行为就像等号操作符。在pattern里的下划线（_）匹配任何单个字符；而一个百分号（%）匹配零或多个任何字符。
要匹配下划线或者百分号本身，在pattern里相应的字符必须前导逃逸字符。缺省的逃逸字符是反斜杠，但是用户可以用ESCAPE子句指定一个。要匹配逃逸字符本身，写两个逃逸字符。
返回值类型：boolean
示例：
```
SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT;
 result
--------
 t
(1 row)
```
```
SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT;
 result
--------
 f
(1 row)
```
```
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
示例：
```
SELECT regexp_like('ABC', '[A-Z]');
 regexp_like
-------------
 t
(1 row)
```
```
SELECT regexp_like('ABC', '[D-Z]');
 regexp_like
-------------
 f
(1 row)
```
```
SELECT regexp_like('abc', '[A-Z]','i');
 regexp_like
-------------
 t
(1 row)
```
```
SELECT regexp_like('abc', '[A-Z]');
 regexp_like
-------------
 f
(1 row)
```
