2016-03-24 14 views

cevap

7

Sen ? ile üst düzey data ait anahtarlarını kontrol edebilirsiniz. json sütun tüm iç içe nesnelerin her anahtar kontrol edilmesi, örneğin

için

tabii özyinelemeli CTE

select * from details 
where 'city' in (
    WITH RECURSIVE t(k,j) as (
     select jsonb_object_keys(details.data), details.data 
    UNION ALL 
     select jsonb_object_keys(t.j->t.k), t.j->t.k 
     FROM t WHERE jsonb_typeof(t.j->t.k) = 'object' 
    ) 
    select k from t 
); 

Bu çok etkili değildir gerektirir.

-1

Sen

SELECT * 
FROM "details" 
WHERE "data"::text LIKE '%"city":%' 
+0

bazı json değeri 'şehir' metin içerebilir GİBİ mesaj çekip ile anahtarı aramak için json dönüştürebilirsiniz. Nasıl ayırt edeceğiniz bu anahtar ad mı yoksa sadece metin mi? –

İlgili konular