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

टेक्स्ट सरणी में जेसन सरणी कैसे डालें?

json_array_elements के बजाय json_array_elements_text आज़माएं , और आपको टेक्स्ट के लिए स्पष्ट कास्टिंग की आवश्यकता नहीं है (x::text ), ताकि आप इसका उपयोग कर सकें:

CREATE or replace FUNCTION json_array_castext(json) RETURNS text[] AS $f$
    SELECT array_agg(x) FROM json_array_elements_text($1) t(x);
$f$ LANGUAGE sql IMMUTABLE;

आपके अतिरिक्त प्रश्न के लिए

<ब्लॉकक्वॉट>

क्यों x::text कास्ट नहीं है?

यह डाला जाता है और इस वजह से, यह कोई त्रुटि नहीं दे रहा है, लेकिन जब जेसन स्ट्रिंग को इस तरह से टेक्स्ट में कास्टिंग करते हैं:::text , पोस्टग्रेज मूल्य में उद्धरण जोड़ता है।

केवल परीक्षण उद्देश्यों के लिए, अपने फ़ंक्शन को फिर से मूल में बदलें (जैसा कि आपके प्रश्न में है) और कोशिश करें:

SELECT  
(json_array_castext('["hello","world"]'))[1] = 'hello',
(json_array_castext('["hello","world"]'))[1],
'hello'

जैसा कि आप देखते हैं, (json_array_castext('["hello","world"]'))[1] देता है "hello" hello . के बजाय . और यही कारण है कि आपको false मिला है उन मानों की तुलना करते समय।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql त्रुटि PANIC:एक मान्य चेकपॉइंट रिकॉर्ड का पता नहीं लगा सका

  2. PostgreSQL LIKE क्लॉज में रेगुलर एक्सप्रेशन

  3. postgresql date_trunc मनमानी परिशुद्धता के लिए?

  4. अचार के साथ पोस्टग्रेज टेबल में अजगर वस्तु को सहेजना

  5. पोस्टग्रेज में संकुल सूचकांक के बारे में