Postgresql

在 where 子句中使用特定的數組列

  • January 31, 2016

有一個返回數組的函式,在查詢中我們使用該函式返回結果,例如:

{"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例如,更容易在子句中使用這些列。然後直接構造你的數組,然後再將它返回給任何需要它的東西。

引用自:https://dba.stackexchange.com/questions/127832