PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज 9.3 . में जोंस ऐरे को पोस्टग्रेज इंट ऐरे में कैसे बदलें

प्रश्न में सेटअप इस तरह दिखना चाहिए:

create table a_table (id int, data json);
insert into a_table values
(1, '{"bookIds": [1,2,3,5], "storeIds": [2,3]}'), 
(2, '{"bookIds": [4,5,6,7], "storeIds": [1,3]}'),
(3, '{"bookIds": [11,12,10,9], "storeIds": [4,3]}');

json मानों के उचित सिंटैक्स पर ध्यान दें।

आप फ़ंक्शन का उपयोग कर सकते हैं json_array_elements()

select id, array_agg(e::text::int)
from a_table, json_array_elements(data->'bookIds') e
group by 1
order by 1;

 id |  array_agg   
----+--------------
  1 | {1,2,3,5}
  2 | {4,5,6,7}
  3 | {11,12,10,9}
(3 rows)    

any() का इस्तेमाल करें सरणियों में किसी तत्व की खोज करने के लिए, जैसे:

select *
from (
    select id, array_agg(e::text::int) arr
    from a_table, json_array_elements(data->'bookIds') e
    group by 1
    ) s
where 
    1 = any(arr) or
    11 = any(arr);

 id |     arr      
----+--------------
  1 | {1,2,3,5}
  3 | {11,12,10,9}
(2 rows)

<@ operator के बारे में भी पढ़ें

आप इसके तत्वों की जांच करके json सरणी (इसे int सरणी में परिवर्तित किए बिना) में भी खोज सकते हैं, जैसे:

select t.*
from a_table t, json_array_elements(data->'bookIds') e
where e::text::int in (1, 11);

 id |                     data                      
----+-----------------------------------------------
  1 | {"bookIds" : [1,2,3,5], "storeIds": [2,3]}
  3 | {"bookIds" : [11,12,10,9], "storeIds": [4,3]}
(2 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException:कनेक्शन पहले ही बंद कर दिया गया है

  2. pgsql पोर्ट बदलें

  3. django में संख्यात्मक स्ट्रिंग्स द्वारा क्वेरी परिणाम ऑर्डर करना (बैकएंड पोस्टग्रेज करना)

  4. Mac OSX Lion Postgres /tmp/.s.PGSQL.5432 पर कनेक्शन स्वीकार नहीं करता है

  5. PostgreSQL में संग्रहीत कार्यविधि से डेटाबेस छोड़ें या बनाएं