[英]COALESCE and ARRAY in postgresql - query
我想在查詢中使用一個數組作為過濾器,而且,如果沒有提供值(通過preparedStatement - java),我需要返回所有值。
像這樣的東西:
AND column = any(coalesce(?, column_example::text[]))
問題是 column_example 是一個 varchar 列。 如何用 sql (postgres) 實現這個需求?
版本:
x86_64-pc-linux-gnu 上的 PostgreSQL 11.9 (Ubuntu 11.9-1.pgdg20.04+1),由 gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 編譯,64 位
如果沒有提供值,我需要返回所有值
你可以這樣做:
AND ( ? is null or column = any(?::text[]) )
可能不需要將參數轉換為數組,這取決於您的驅動程序是否能夠正確傳遞此類數據類型。 如果是這樣的話:
AND ( ? is null or column = any(?) )
嗯。 . . 兩個單獨的比較怎么樣?
AND
(column = ? OR ? IS NULL AND column = any(column_example::text[]))
您需要兩次傳遞參數或使用命名參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.