Açıklaması şöyle
There’s a very long list of JSON Processing Functions, including functions (for example) to:- expand a json array into different data types- count elements- extract objects (similar to “#>” and “#>>” operators)- return the json keys- set and insert (which replaces or adds path elements)- path checking (exists, match, query)- pretty and- Typeof!
Verinin tipinin örneğin array olup olmadığını anlamak için kullanılır
Örnek
address sütunu JSONB tipinden olsun ve içindeki veri şöyle olsun{"address":[ { "types":["route"], "long_name":"20203 113B Ave", "short_name":"20203 113B Ave" }, { "types":["locality","political"], "long_name":"Maple Ridge", "short_name":"Maple Ridge" }, ... ] }
Şöyle yaparız. İçteki sorguda b.address alanındaki dizi çekiliyor. Ancak dizi olması gerek bazı veri json array değil de jsonb. Bu yüzden önce array olmayan veri eleniyor. Daha sonra dış sorguda address nesnesinin long_name alanının değerine text olarak erişiliyor.
SELECT DISTINCT x.address ->> 'long_name' AS country_nameFROM (SELECT jsonb_array_elements(b.address) AS addressFROM brand bWHERE jsonb_typeof(b.address) = 'array' -- !!!) xWHERE x.address ->> 'types' ILIKE ANY (ARRAY['%country%'::text]);
Hiç yorum yok:
Yorum Gönder