0
我有一個,對位表,其中包括一個字段是equipment_id和存儲陣列鐵路Postgres的數組包含(<@)不包括零
我試圖搜索,對位表,以獲取數組有沒有任何記錄它包含特定的設備ID。例如: 所以我正在運行:
search_equipment_ids = [1, 2, 3, 4, 5]
Matchup.where("equipment_id <@ ARRAY[?]", search_equipment_ids)
以下是存儲在equipment_id表,什麼陣列的幾個例子,上面的查詢會導致
[1, 2] = True
[3, 5] = True
[1, 2, 3] = True
[1, 2, nil, 3] = False
如何獲得搜索忽略可能包含在數組中的nil。我將改變數組的存儲方式,所以從這裏開始不會有零值...但同時我需要考慮這些。
我使用:https://www.postgresql.org/docs/9.5/static/functions-array.html作爲參考。
我不想使用& &運算符,因爲匹配表是巨大的,如果只比較一個設備ID是否存在,它將返回許多結果。我只想返回,如果所有的equipment_ids都包含(不包括任何nils)。
謝謝!
對不起,爲了混淆,搜索var(equipment_ids)不是具有零值的那個。表中的equipment_id字段保存nil值。 – cal1801
只是修改了這個問題,希望能夠提供一些解釋 – cal1801
您應該更新每條記錄並刪除它們。 – tadman