模式匹配条件
模式匹配运算符针对搜索条件表达式中指定的模式搜索字符串,然后根据是否找到匹配项来返回 true 或 false。Amazon Redshift 使用三种模式匹配方法:
-
LIKE 表达式
LIKE 运算符将字符串表达式(如列名称)与使用通配符
%
(百分比)和_
(下划线)的模式进行比较。LIKE 模式匹配始终涵盖整个字符串。LIKE 执行区分大小写的匹配,而 ILIKE 执行不区分大小写的匹配。 -
SIMILAR TO 正则表达式
SIMILAR TO 运算符使用 SQL 标准正则表达式模式来匹配字符串表达式,该模式可包含一组模式匹配元字符,其中包括 LIKE 运算符支持的两个元字符。SIMILAR TO 匹配整个字符串并且执行区分大小写的匹配。
-
POSIX 样式的正则表达式
与 LIKE 和 SIMILAR TO 运算符相比,POSIX 正则表达式提供了更强大的模式匹配手段。POSIX 正则表达式模式可与字符串的任何部分匹配,并执行区分大小写的匹配。
使用 SIMILAR TO 或 POSIX 运算符的正则表达式匹配的计算成本高昂。我们建议尽可能使用 LIKE,尤其是在处理非常多的行时。例如,下列查询的功能相同,但使用 LIKE 的查询相比于使用正则表达式的查询的运行速度快若干倍:
select count(*) from event where eventname SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';