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

Postgresql, json सरणी से विशिष्ट कुंजी के लिए मान प्राप्त करें

9.4+ पोस्ट करें . में फ़ंक्शन का उपयोग करें jsonb_array_elements() लेटरल जॉइन में:

select (elem->>'skillLevel')::int as skill_level
from my_table
cross join jsonb_array_elements(json_col) elem
where elem->>'skillId' = '1';

आप इस विचार को एक साधारण कार्य में लागू कर सकते हैं, जैसे:

create or replace function extract_skill_level(json_data jsonb, id int)
returns integer language sql as $$
    select (elem->>'skillLevel')::int
    from jsonb_array_elements(json_data) elem
    where elem->>'skillId' = id::text
$$;

select extract_skill_level(json_col, 1) as skill_level
from my_table;

पोस्टग्रेज 12+ . में आपके पास jsonb पथ फ़ंक्शन के रूप में एक अच्छा विकल्प है:

select (
    jsonb_path_query(
        json_col, 
        '$[*] ? (@.skillId == "1")'
        )->'skillLevel'
    )::int as skill_level
from my_table;

Db<>Fiddle.

JSON फंक्शन्स और ऑपरेटर्स के बारे में और पढ़ें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर जैसे क्लॉज से जुड़ने के साथ चुनिंदा क्लॉज में Postgresql सबक्वेरी कैसे करें?

  2. एक स्कीमा में फ्लाईवे एकाधिक मेटाडेटा टेबल

  3. पोर्ट 5432 पर Postgresql से कनेक्ट नहीं हो सकता

  4. PostgreSQL पर एकाधिक सूत्र

  5. PostgreSQL में कनेक्शन प्रबंधन:एक गाइड