簡體   English   中英

postgresql 中的 COALESCE 和 ARRAY - 查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM