array_length()
2つが必要です パラメータ、2番目は配列の次元です:
array_length(id_clients, 1) > 0
だから:
IF array_length(id_clients, 1) > 0 THEN
query := query || format(' AND id = ANY(%L))', id_clients);
END IF;
これは、空の配列との両方を除外します NULL。
または、 cardinality()
>
Postgres9.4以降で。 @bronzenoseによる追加の回答を参照してください。
ただし、クエリを連結して EXECUTE
で実行する場合 、 USING
を使用して値を渡す方が賢明です 句。例:
ところで、配列が空かどうかを明示的に確認するには (あなたのタイトルが言うように-しかしそれはではありません ここで必要なもの)空の配列と比較するだけです:
id_clients = '{}'
それで全部です。取得:
TRUE
..配列が空ですNULL
..配列がNULLですFALSE
..その他の場合(配列には要素があります-NULL要素だけでも)