我确定我不理解这一点,但这被定义为
PATTERN:指定要匹配的模式 PATTERN ( ) 模式定义了表示匹配的有效行序列。该模式的定义类似于正则表达式 (regex),由符号、运算符和量词构成。
一个例子是:
例如,假设符号 S1 定义为 stock_price < 55,符号 S2 定义为股票价格 > 55。以下模式指定股票价格从小于 55 增加到大于 55 的行序列:
模式(S1 S2)
所以如果我这样做
create or replace table names (id int, name varchar (500), groupid int);
insert into names
select 1, 'andrew', 1
union
select 2, 'andrew2', 1
union
select 3, '3andrew', 1
然后我做
select * from names
match_recognize(
partition by groupid order by id
measures
classifier() as "classifier"
all rows per match
pattern (test test2)
define test as startswith(name, 'and'),
test2 as endswith(name, 'rew')
) t
;
为什么我没有得到“andrew”作为创纪录的回报?如果我将任一测试放入模式中,它确实会显示出来。当我把两个都放进去时,它没有。相反,它显示 3andrew 和 andrew2 作为记录结果,这对我来说是出乎意料的,因为这个例子让我相信它就像 AND 一样工作。任何帮助表示赞赏。