PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL melepaskan string JSON

Saya baru saja menemukan masalah ini sendiri, dan inilah cara saya mendekatinya. Saya membuat fungsi pembantu yang mengulangi array dan menggunakan operator ->> menggunakan subskrip untuk mendapatkan kembali nilai teks. Jika ada yang tahu cara yang lebih baik, saya senang mendengarnya, karena ini tampaknya agak kikuk.

CREATE OR REPLACE FUNCTION json_text_array_to_pg_text_array(data json) returns text[] AS $$
DECLARE
    i integer;
    agg text[];
BEGIN
    FOR i IN 0..json_array_length(data)-1 LOOP
        agg := array_append(agg, data->>i);
    END LOOP;

    return agg;
END
$$ language plpgsql;

Kemudian Anda dapat melakukan hal-hal seperti:

test=# select json_text_array_to_pg_text_array('[ "hello","the\"re","i''m", "an", "array" ]'::json);
 json_text_array_to_pg_text_array 
----------------------------------
 {hello,"the\"re",i'm,an,array}
(1 row)

Anda juga dapat membuat fungsi hanya mengembalikan satu set teks jika Anda tidak ingin berurusan dengan array secara langsung:

CREATE OR REPLACE FUNCTION json_text_array_to_row(data json) returns setof text AS $$
DECLARE
    i integer;
BEGIN
    FOR i IN 0..json_array_length(data)-1 LOOP
        return next data->>i;
    END LOOP;
    return;
END
$$ language plpgsql;

Dan kemudian lakukan ini:

test=# select json_text_array_to_row('{"single_comment": "Fred said \"Hi.\"" ,"comments_array": ["Fred said \"Hi.\"", "Fred said \"Hi.\"", "Fred said \"Hi.\""]}'::json->'comments_array');
 json_text_array_to_row 
------------------------
 Fred said "Hi."
 Fred said "Hi."
 Fred said "Hi."
(3 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. Skrip Bash untuk menginstal PostgreSQL - Tidak berfungsi

  2. Di Rails, Tidak dapat membuat database untuk {adapter=>postgresql,

  3. Bagaimana sisi FROM dari UPDATE berhubungan dengan tabel yang ditargetkan untuk UPDATE?

  4. Pemicu postgres untuk memperbarui cache Java

  5. AsyncQuery dengan postgresql dan rapi menggunakan npqsql