Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JSON_VALUE() di MySQL

Di MySQL, JSON_VALUE() fungsi mengekstrak nilai dari dokumen JSON di jalur yang ditentukan.

Fungsi ini diperkenalkan di MySQL 8.0.21.

Sintaks

Sintaksnya seperti ini:

JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error])

Dimana:

on_empty:
    {NULL | ERROR | DEFAULT value} ON EMPTY

on_error:
    {NULL | ERROR | DEFAULT value} ON ERROR

Contoh

Berikut adalah contoh sederhana untuk ditunjukkan:

SELECT JSON_VALUE( '{ "name" : "Wag", "type" : "Dog" }', '$.type' );

Hasil:

Dog

Array

Berikut ini contoh mendapatkan nilai dari array:

SELECT JSON_VALUE( '{ "name" : "Wag", "scores" : [ 25, 36, 48 ] }', '$.scores[1]' );

Hasil:

36

Array berbasis nol, jadi 1 mengembalikan elemen kedua (0 akan mengembalikan yang pertama).

Dokumen Tersemat

Berikut ini contoh mendapatkan nilai dari objek yang disematkan:

SELECT JSON_VALUE(
    '{ 
        "_id" : 1, 
        "details" : { 
            "name" : "Wag",
            "type" : "Dog"
            } 
    }', 
    '$.details.type' 
    );

Hasil:

Dog

Jenis Pengembalian

Berikut ini contoh menentukan jenis pengembalian:

SELECT JSON_VALUE(
    '{ 
        "_id" : 1, 
        "details" : { 
            "name" : "Wag",
            "type" : "Dog"
            } 
    }', 
    '$.details' RETURNING json
    );

Hasil:

{"name": "Wag", "type": "Dog"}

Jika Anda tidak menentukan jenis pengembalian, jenis pengembaliannya adalah VARCHAR(512) .

Hasil Kosong

Secara default, jika tidak ada data yang ditemukan pada jalur yang ditentukan, NULL dikembalikan:

SELECT JSON_VALUE(
    '{ 
        "name" : "Wag",
        "type" : "Dog"
    }', 
    '$.score'
    );

Hasil:

NULL

Namun, opsi berikut dapat digunakan untuk secara eksplisit menentukan apa yang harus terjadi ketika tidak ada data yang ditemukan di jalur yang diberikan:

  • NULL ON EMPTY :Fungsi mengembalikan NULL; ini adalah perilaku default.
  • DEFAULT value DI KOSONG :value . yang diberikan dikembalikan. Jenis nilai harus cocok dengan jenis yang dikembalikan.
  • ERROR ON EMPTY :Fungsi memunculkan kesalahan.

Contoh:

SELECT JSON_VALUE(
    '{ 
        "name" : "Wag",
        "type" : "Dog"
    }', 
    '$.score' 
    DEFAULT 'Nothing found' ON EMPTY
    );

Hasil:

Nothing found

Kesalahan

Berikut ini dapat digunakan untuk menentukan apa yang terjadi ketika kesalahan terjadi:

  • NULL ON ERROR :JSON_VALUE() mengembalikan NULL; ini adalah perilaku default.
  • DEFAULT value DI KESALAHAN :Ini adalah nilai yang dikembalikan; nilainya harus cocok dengan jenis pengembalian.
  • ERROR ON ERROR :Terjadi kesalahan.

Jika digunakan, ON EMPTY harus mendahului ON ERROR ayat. Menentukannya dalam urutan yang salah akan menyebabkan kesalahan sintaksis.

Indeks

Seperti disebutkan dalam catatan rilis MySQL 8.0.21, JSON_VALUE() fungsi menyederhanakan pembuatan indeks pada JSON kolom. Panggilan ke JSON_VALUE(json_doc , path MENGEMBALIKAN type ) sama dengan memanggil CAST( JSON_UNQUOTE( JSON_EXTRACT(json_doc , path ) ) SEBAGAI type ) .

Berikut adalah contoh yang digunakan dalam catatan rilis:

CREATE TABLE inventory(
    items JSON,
    INDEX i1 ( (JSON_VALUE(items, '$.name' RETURNING CHAR(50))) ),
    INDEX i2 ( (JSON_VALUE(items, '$.price' RETURNING DECIMAL(5,2))) ),
    INDEX i3 ( (JSON_VALUE(items, '$.quantity' RETURNING UNSIGNED)) )
);

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan catatan duplikat di MySQL

  2. Cara Memantau Metrik HAProxy dengan ClusterControl

  3. Basis Data Default MySQL

  4. Cara Menghapus Spasi Dari String di MySQL

  5. Cara Membuat Tampilan MySQL