最近,我们已经从 MySQL 更改为 PostgreSQL。除了带有 Mysql 'REGEXP' 关键字的查询之外,大多数查询都已被翻译:
MySQL (prepared statement):
SELECT * FROM table WHERE ? REGEXP identifier;
我们有一个“表”,其中一列称为“标识符”。此“标识符”列包含实际的正则表达式模式。
因此,它不是在查询中对正则表达式模式进行“硬编码”,而是查找该模式的标识符列。
在 Postgresql 中,我们需要使用 '~' 关键字而不是 'REGEXP' 关键字(仅限 MySQL),但使用 Postgresql 我似乎无法从列中提取模式。
我尝试了以下查询但没有成功:
SELECT * FROM table WHERE 'test' ~ "identifier";
ERROR: invalid regular expression: parentheses () not balanced
SELECT * FROM table WHERE "identifier" ~ 'test';
-> no results
出于测试目的,我创建了许多记录,其中“标识符”列包含“。*”作为值(匹配所有内容的正则表达式),但我仍然没有得到适当的结果。
非常欢迎帮助,谢谢!