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

Postgres में 'टाइप json के लिए अमान्य इनपुट सिंटैक्स' को कैसे रोकें, जब रिकॉर्ड में json या स्ट्रिंग्स का मिश्रण होता है

यदि आप अमान्य JSON वाली पंक्तियों को छोड़ना चाहते हैं, तो आपको पहले परीक्षण . करना होगा यदि पाठ वैध JSON है। आप ऐसा फ़ंक्शन बनाकर कर सकते हैं जो मान को पार्स करने का प्रयास करेगा, और अमान्य JSON मानों के अपवाद को पकड़ लेगा।

CREATE OR REPLACE FUNCTION is_json(input_text varchar) RETURNS boolean AS $$
  DECLARE
    maybe_json json;
  BEGIN
    BEGIN
      maybe_json := input_text;
    EXCEPTION WHEN others THEN
      RETURN FALSE;
    END;

    RETURN TRUE;
  END;
$$ LANGUAGE plpgsql IMMUTABLE;

जब आपके पास वह हो, तो आप is_json . का उपयोग कर सकते हैं CASE . में कार्य करें या WHERE मान्य मानों को कम करने के लिए खंड।

-- this can eliminate invalid values
SELECT user_data::json #> '{user,name}'
FROM users WHERE is_json(user_data);

-- or this if you want to fill will NULLs
SELECT
  CASE
    WHEN is_json(user_data)
      THEN user_data::json #> '{user,name}'
    ELSE
      NULL
  END
FROM users;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टेबल कॉलम पर पोस्टग्रेज JSON फ़ंक्शंस का उपयोग करना

  2. द्वारा प्राकृतिक क्रम को पोस्टग्रेज करता है

  3. अपरकेस से मिलान करने के लिए Postgresql रेगेक्स, यूनिकोड-जागरूक

  4. रेल:हरोकू की तैनाती, कई समस्याएं

  5. PostgreSQL में वर्तमान समय कैसे प्राप्त करें