簡體   English   中英

Postgres-檢查數組是否包含非預期值

[英]Postgres - Check if array contains values other than expected ones

假設一個條目的數組值為{1,2,3}。

我希望能夠查詢以下問題:

“數組是否包含1和2以外的數字?” (是)

這也可以滿足我的目的:

“此數組是否不包含1、2、3和4以外的其他值?” (是的,即使沒有使用4也可以)

我四處張望,卻無法在數組中找到這種特殊的搜索形式。 有一種有效的方法可以做到這一點嗎?

編輯:我找到了一個解決方案,在該解決方案中,我可以對數組進行嵌套,並從未嵌套的行中進行選擇,以使我的條件與!= ANY匹配,但是它看起來並不十分優雅,我希望有替代方案!

您可以嘗試使用EXCEPTUNNEST一種選擇

SELECT CASE 
        WHEN count(*) > 0
            THEN TRUE
        ELSE FALSE
        END IN_A_NOT_IN_B
FROM (
    SELECT unnest(array [1,2,3])
        EXCEPT
    SELECT unnest(array [1,2])
    ) t;

如果您將其反轉,則第二個條件將為True。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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