Sql 在where子句中使用regexp_时,重复范围的数字太大

Sql 在where子句中使用regexp_时,重复范围的数字太大,sql,regex,presto,Sql,Regex,Presto,我尝试运行以下查询: select * from table where regexp_like('^{{', text_field) 并得到以下错误: 重复范围的数字太大 我认为对于重复计数运算符来说,regexp_like可能会让人困惑,因此我也尝试了以下变体: select * from table where regexp_like('^\{\{', text_field) select * from table where regexp_like('^[{][{]', text_fi

我尝试运行以下查询:

select * from table where regexp_like('^{{', text_field)
并得到以下错误:

重复范围的数字太大

我认为对于重复计数运算符来说,
regexp_like
可能会让人困惑,因此我也尝试了以下变体:

select * from table where regexp_like('^\{\{', text_field)
select * from table where regexp_like('^[{][{]', text_field)
select * from table where regexp_like('^[[:punct:]]{2}', text_field)

所有这些都不起作用。目前,像{{{{}这样的
text_字段就足够了,但我可能想包括一个更灵活的版本,它需要正则表达式。我的方法有什么问题?这个错误消息意味着什么?

您以错误的方式使用了类似prestodb regex_的函数:

regexp_like(string, pattern)
计算正则表达式模式并确定它是否为 包含在字符串中。此函数类似于 运算符,希望模式只需要包含在 字符串,而不需要匹配所有字符串。换句话说, 这将执行包含操作而不是匹配操作。您 可以通过使用^和$锚定模式来匹配整个字符串:

SELECT regexp_like('1a 2b 14m', '\d+b'); -- true