Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Fungsi JSON_OBJECTAGG() di Oracle

Di Oracle Database, JSON_OBJECTAGG() function membuat objek JSON dari pasangan nilai kunci.

Biasanya, kunci properti, nilai properti, atau keduanya adalah kolom ekspresi SQL.

Sintaks

Sintaksnya seperti ini:

JSON_OBJECTAGG
  ( [ KEY ] string VALUE expr [ FORMAT JSON ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] [ WITH UNIQUE KEYS ]
  )

Dimana:

  • [ KEY ] key_expr VALUE val_expr menentukan pasangan nilai kunci properti.
  • FORMAT JSON menunjukkan bahwa string input adalah JSON, dan karena itu tidak akan dikutip dalam output.
  • JSON_on_null_clause menentukan perilaku yang akan digunakan saat expr sama dengan null (yaitu menyertakan nilai null dalam output atau tidak).
  • JSON_returning_clause menentukan jenis nilai kembalian.
  • STRICT memeriksa apakah output dari fungsi generasi JSON adalah JSON yang benar atau tidak. Jika pemeriksaan gagal, kesalahan sintaks akan muncul.
  • WITH UNIQUE KEYS menjamin bahwa objek JSON yang dihasilkan memiliki kunci unik.

Contoh

Berikut ini contoh untuk mendemonstrasikan cara kerjanya:

SELECT JSON_OBJECTAGG(KEY 'score' VALUE 37) FROM DUAL;

Hasil:

{"score":37}

KEY bagian adalah opsional, jadi berikut ini mencapai hasil yang sama:

SELECT JSON_OBJECTAGG('score' VALUE 37) FROM DUAL;

Hasil:

{"score":37}

JSON bersarang

Jika salah satu nilai yang Anda berikan berisi JSON, Anda dapat menggunakan FORMAT JSON argumen untuk menentukan bahwa itu berisi JSON dan tidak boleh dikutip dalam output.

Contoh:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}' 
    FORMAT JSON
    ) 
FROM DUAL;

Hasil:

{"details":{"name": "Peter", "score": 64}}

Inilah yang terjadi jika kita menghapus FORMAT JSON bagian:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}'
    ) 
FROM DUAL;

Hasil:

{"details":"{\"name\": \"Peter\", \"score\": 64}"} 

Contoh Basis Data

JSON_OBJECTAGG() fungsi biasanya digunakan untuk menghasilkan dokumen JSON berdasarkan nilai dalam kolom database.

Misalkan kita menjalankan kueri berikut:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Hasil:

    JOB_ID                        JOB_TITLE    MIN_SALARY    MAX_SALARY 
__________ ________________________________ _____________ _____________ 
AD_PRES    President                                20000         40000 
AD_VP      Administration Vice President            15000         30000 
SA_MAN     Sales Manager                            10000         20000

Berikut adalah contoh bagaimana kita dapat menggunakan JSON_OBJECTAGG() berfungsi untuk menghasilkan dokumen JSON dari dua kolom di atas:

SELECT JSON_OBJECTAGG(KEY job_id VALUE min_salary) 
FROM jobs
WHERE min_salary > 9000;

Hasil:

{"AD_PRES":20000,"AD_VP":15000,"SA_MAN":10000}

Dalam hal ini, job_id kolom adalah kuncinya, dan min_salary kolom adalah nilainya.

Lihat dokumentasi Oracle untuk penjelasan lebih rinci tentang fungsi ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beberapa sisipan SQL oracle

  2. Nonaktifkan semua batasan tabel di Oracle

  3. ORA-01460:permintaan konversi yang tidak diterapkan atau tidak masuk akal

  4. Mengapa Group By Mysql dan Group by Oracle berbeda?

  5. Cara menggunakan Oracle SQL*Plus