【发布时间】:2014-05-17 20:54:41
【问题描述】:
我想使用预定义的正则表达式在我的另一个表中选择我的表中的行。
您可以在下面看到我的示例表:
表code
id | codename
-----+------------
1 | 123456
2 | NF123
3 | AAA444
4 | EEE123
5 | EEE423
6 | AB123E
表validcode
id | validreg
------+-----------
1 | [E]{3}[0-9]{3}
2 | NF123
这是sqlfidlle上的测试用例。
这是我尝试过的选择语句之一,但它不起作用:
SELECT n.codename FROM code n
WHERE EXISTS (SELECT * FROM validcode WHERE n.codename ~* E'^' || validreg || '$');
我收到此错误:
ERROR: argument of WHERE must be type boolean, not type text: SELECT codename FROM code n WHERE EXISTS (SELECT * FROM validcode WHERE n.codename ~* E'^' || validreg || '$');
有可能以某种方式做到这一点吗?
【问题讨论】:
-
您不需要
where exists或子查询。加入查询应该没问题,比如SELECT n.codename FROM code n, validcode WHERE n.codename ~* E'^' || validcode.validreg || '$'。不过可能效率不高。 -
但它仍然不起作用,我认为问题出在我在这里某处进行连接的字符串中 ~* E'^' ||有效代码.validreg || '$'
标签: sql regex postgresql select