检查SELECT查询中是否存在

时间:2018-04-13 01:32:13

标签: sql postgresql

我从函数getPattern(整数)得到的是:

哪里' .... 3 ...'是一种模式(如comp3333匹配)。

我想打印出所有不包含的图案。'

所以我这样做:

 SELECT pattern as pn 
 FROM getPattern($1)
 WHERE EXISTS (SELECT pattern as pr  
               FROM getPattern($1) 
               WHERE pr ~* '^[A-Z]{4}[0-9]{4}$')
   AND pn ~* '^[A-Z]{4}[0-9]{4}$'

有时当我们使用函数getPattern(int)时,结果可能不包含没有'。'的任何模式,这就是错误显示的内容:

enter image description here

我应该以一种干净的方式做什么?

1 个答案:

答案 0 :(得分:0)

您不能在WHERE子句中使用别名。在这个子查询中,无论如何都不需要:

(SELECT pattern as pr FROM getPattern($1) WHERE pr ~* '^[A-Z]{4}[0-9]{4}$')

所以只需将其更改为:

(SELECT pattern FROM getPattern($1) WHERE pattern ~* '^[A-Z]{4}[0-9]{4}$')