我想用我的预定义正则表达式在我的另一个表中选择表格中的行 您可以在下面看到我的示例表:
表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 || '$');
有可能以某种方式这样做吗?
答案 0 :(得分:2)
SELECT n.codename FROM code n, validcode
WHERE n.codename ~* ('^' || validcode.validreg || '$')
支持,因为否则解析器认为n.codename ~* E'^'
是其中一部分,而其余部分则连接起来。
此外,您的原始查询也适用于其他大括号。