jsonb alanındaki herhangi bir numaralı anahtarın nerede olursa olsun bir metin içerdiği tüm kayıtları almak istiyorum.Sorgu, değerden bağımsız olarak jsonb değerini jsonb
Örneğin: alan json {k1: 'hello', k2: 'world'}
içerir. Bu kaydı 'merhaba' metniyle almak istiyorum. Anahtarlar ya da herhangi bir json yapısı, sadece değerler umrumda değil.
Bir kirli kesmek, alanı varchar where jsonb_field::varchar like ...
'a yayınlamaktır, ancak bu çirkindir ve anahtarlarla ve {} ile eşleşecektir.
SELECT * FROM mytable AS m1 WHERE (
SELECT string_agg(value, '') FROM jsonb_each_text((SELECT name FROM mytable AS m2 WHERE m1.id= m2.id)::jsonb)
) LIKE '%whatever%';
ama çok çirkin:
başka kirli kesmek buna benzemez.
Bunu nasıl yapabilirim?
Jsonumda bir dizi değeri varsa, başarısız oluyor. –
@DeepakKumarPadhy İlginiz için teşekkürler. İşlev ve örnek güncellendi. – Abelisto
Kayıtlı proc'm benim problemim için çalışacağım gibi düştüm (http://stackoverflow.com/questions/43252423/searching-for-a-particular-value-in-a-jsonb-datatype-prostgresql). Bunun en uygun yol olup olmadığından emin değilim, sorunum için herhangi bir öneri. –