2013-11-28 9 views
17

मैं एक नए postgreSQL डीबी के लिए फ़ंक्शन लिख रहा हूं और मैं एक नेस्टेड संरचना पर लूप करने की कोशिश कर रहा हूं।पोस्टग्रेस्क्ल में JSON Arrays पर कैसे करें लूप 9.3

क्या यह नए JSON फ़ंक्शंस के साथ भी संभव है? क्या मुझे क्या करना कोशिश कर रहा हूँ यहाँ नीचे है:

DO 
$BODY$ 
DECLARE 
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]'; 
    i record; 
BEGIN 
    FOR i IN SELECT * FROM json_array_elements(omgjson) 
    LOOP 
    RAISE NOTICE 'output from space %', i; 
    END LOOP; 
END; 
$BODY$ language plpgsql 

यह (! पाठ) रिकॉर्ड का एक सेट देता है, कि JSON नहीं है! इसलिए मैं यह i->>'type' तरह क्वेरी नहीं कर सकते, लेकिन वह वास्तव में क्या मैं पूरा करने के लिए चाहते हैं ...

उत्तर

36

मैं एक छोटे से गूंगा था, लेकिन PostgreSQL वेबसाइट पर इस json सुविधा पर प्रलेखन वास्तव में कम से कम

समस्या को हल करने के लिए है मैंने किया था

DO 
$BODY$ 
DECLARE 
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]'; 
    i json; 
BEGIN 
    FOR i IN SELECT * FROM json_array_elements(omgjson) 
    LOOP 
    RAISE NOTICE 'output from space %', i->>'type'; 
    END LOOP; 
END; 
$BODY$ language plpgsql 
+0

पोस्टग्रेस्क्ल के बाद के संस्करण में आप jsonb_array_elements का उपयोग कर सकते हैं –

संबंधित मुद्दे