Fab*_*oni 3 postgresql array where postgresql-9.5
有一个返回数组的函数,在查询中我们使用该函数返回结果,例如:
{"TUNDUMA GOING (BORDER)","ARRIVAL DATE",09/01/2016,22,"AT CHECKPOINT"}
{"TUNDUMA RETURN (BORDER)","DEPARTURE DATE",29/01/2016,2,"ON THE ROAD"}
Run Code Online (Sandbox Code Playgroud)
我们如何添加一个WHERE
子句,该子句将仅通过搜索ON THE ROAD
值的数组的第 5 列进行过滤?
有没有办法参考array[4]
?
试过
where trip_status(tlid) <@ array['AT CHECKPOINT']::varchar
Run Code Online (Sandbox Code Playgroud)
同trip_status()
是一个返回数组的功能,但我发现了以下错误:
Run Code Online (Sandbox Code Playgroud)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
子句中使用这些列。然后在将它返回到任何需要它的地方之前直接构造你的数组。
归档时间: |
|
查看次数: |
1209 次 |
最近记录: |