首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用列数据作为正则表达式匹配的模式

问使用列数据作为正则表达式匹配的模式
EN

Stack Overflow用户
提问于 2012-11-26 19:56:04
回答 1查看 4.4K关注 0票数 3

最近,我们已经从MySQL更改为PostgreSQL。除了带有Mysql 'REGEXP‘关键字的查询之外,大多数查询都已被翻译:

代码语言:javascript
复制
MySQL (prepared statement):
SELECT * FROM table WHERE ? REGEXP identifier;

我们有一个“表”,其中一列被称为“标识符”。此“identifier”列包含实际的正则表达式模式。

因此,它不是在查询中对regexp模式进行“硬编码”,而是在标识符列中查找该模式。

在Postgresql中,我们需要使用'~‘关键字,而不是'REGEXP’关键字(仅限MySQL ),但在Postgresql中,我似乎无法从列中提取模式。

我尝试了以下查询,但没有成功:

代码语言:javascript
复制
SELECT * FROM table WHERE 'test' ~ "identifier";
ERROR:  invalid regular expression: parentheses () not balanced


SELECT * FROM table WHERE "identifier" ~ 'test';
-> no results

出于测试目的,我创建了许多记录,其中"identifier“列包含'.*‘作为值( match everything的正则表达式),但仍然得不到适当的结果。

非常欢迎您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 20:38:57

也许问题出在某个regexp字符串中?(如错误字符串所示)

我已经测试过

代码语言:javascript
复制
SELECT *
FROM table1 t
WHERE 'cat' ~ t.reg;

这对我来说很管用。这是我的SQL小提琴。http://sqlfiddle.com/#!12/f245c/3

问题可能出在不同的regexp解释中。有关postgresql regexp的详细信息,请单击此处http://www.postgresql.org/docs/current/static/functions-matching.html

更新程序还可以阅读http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS以获取有关postgresql字符串的详细信息。您需要这样才能正确地编写regexp。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13564369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档