postgres 9.4声称array_length返回一个集合?

时间:2016-07-20 03:15:24

标签: postgresql postgresql-9.4

以下查询:

select case when array_length(regexp_matches('sss', 's')::text[], 1) = 1 then 'x' else 'y' end;

引发错误:

ERROR:  argument of CASE/WHEN must not return a set
LINE 1: select case when array_length(regexp_matches('sss', 's')::te...
                         ^

********** Error **********

ERROR: argument of CASE/WHEN must not return a set
SQL state: 42804
Character: 18

我想知道发生了什么事?如何让这样的查询起作用?

此查询正常工作:

select case when array_length('{1,2}'::text[], 1) = 1 then 'x' else 'y' end;

1 个答案:

答案 0 :(得分:0)

啊,好吧 - 傻傻的我。没有'g'标志regexp_matches返回一行。但是它的返回类型是SETOF text [],无论如何。