有一个返回数组的函数,在查询中我们使用该函数返回结果,例如:
{"TUNDUMA GOING (BORDER)","ARRIVAL DATE",09/01/2016,22,"AT CHECKPOINT"}
{"TUNDUMA RETURN (BORDER)","DEPARTURE DATE",29/01/2016,2,"ON THE ROAD"}
我们如何添加一个WHERE
子句来过滤数组的第 5 列,仅搜索ON THE ROAD
值?
有没有办法参考array[4]
?
试过
where trip_status(tlid) <@ array['AT CHECKPOINT']::varchar
trip_status()
作为返回数组但出现以下错误的函数:
Query failed: ERROR: operator does not exist: character varying[] <@ character varying LINE 6: ...ere trip_closed(tlid)=false and trip_status(tlid) <@ array[ ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
是否存在类似的东西where trip_status(tlid)[4] = 'AT CHECKPOINT'
?
您将演员表放在数组构造函数之外 - 请
::varchar[]
改用。当前查询将返回数组文字(类型为varchar
)而不是实际数组 - 请参阅示例SQL Fiddle。但总的来说,如果您只需要输出作为下游数组,那么如果您在上游返回适当的列,将会使您的生活更轻松——
WHERE
例如,更容易在子句中使用它们。然后直接构造你的数组,然后再将它返回到任何需要它的地方。