MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

MariaDB JSON_TYPE() Dijelaskan

Di MariaDB, JSON_TYPE() adalah fungsi bawaan yang mengembalikan tipe nilai JSON, sebagai string.

Sintaks

Sintaksnya seperti ini:

JSON_TYPE(json_val)

Dimana json_val adalah nilai untuk mengembalikan jenisnya.

Jenis Objek

Kemungkinan jenis pengembalian tercantum dalam tabel berikut:

Jenis yang dikembalikan Nilai Contoh
ARRAY Array JSON. [1, 2, 3]
OBJECT objek JSON. {"a":"1"}
BOOLEAN JSON benar/salah literal. true atau false
DOUBLE Angka dengan setidaknya satu desimal floating point. 1.2
INTEGER Angka tanpa desimal floating point. 1
NULL JSON null harfiah. Ini dikembalikan sebagai string, dan jangan bingung dengan SQL NULL nilai. null
STRING string JSON. "bird"

Contoh

Berikut ini contoh untuk didemonstrasikan.

SET @json = '
    { 
        "name" : "Fluffy", 
        "type" : "Cat" 
    }
';

SELECT JSON_TYPE(@json);

Hasil:

+------------------+
| JSON_TYPE(@json) |
+------------------+
| OBJECT           |
+------------------+

Dalam contoh ini saya melewati seluruh dokumen JSON, yang memiliki tipe OBJECT .

Berikut ini contoh lainnya:

SELECT 
    JSON_TYPE('[1, 2, 3]'),
    JSON_TYPE('{ "a" : 1 }'),
    JSON_TYPE('true'),
    JSON_TYPE('false'),
    JSON_TYPE(10.59),
    JSON_TYPE(10),
    JSON_TYPE(null),
    JSON_TYPE('"Fuzzy Smith"');

Hasil (menggunakan keluaran vertikal):

    JSON_TYPE('[1, 2, 3]'): ARRAY
  JSON_TYPE('{ "a" : 1 }'): OBJECT
         JSON_TYPE('true'): BOOLEAN
        JSON_TYPE('false'): BOOLEAN
          JSON_TYPE(10.59): DOUBLE
             JSON_TYPE(10): INTEGER
           JSON_TYPE(null): NULL
JSON_TYPE('"Fuzzy Smith"'): STRING

Ekstrak Nilai dari Dokumen JSON

Dalam contoh sebelumnya, saya meneruskan setiap nilai langsung ke fungsi sebagai literal.

Kita dapat menggabungkan JSON_TYPE() dengan fungsi lain, seperti JSON_EXTRACT() untuk mengetahui jenis nilai dalam dokumen JSON yang lebih besar. Berikut adalah contoh mengekstrak nilai dari dokumen JSON untuk mengetahui jenisnya:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9] 
    }
';

SELECT 
    JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;

Hasil:

+--------+
| Result |
+--------+
| STRING |
+--------+

Berikut contoh lain yang mengembalikan lebih banyak jenis:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9],
        "weight" : 10.50,
        "height" : null,
        "age" : 4
    }
';

SELECT 
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.name')
        ) AS a,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores')
        ) AS b,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores[0]')
        ) AS c,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.weight')
        ) AS d,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.height')
        ) AS e,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.age')
        ) AS f;

Hasil:

+--------+-------+---------+--------+------+---------+
| a      | b     | c       | d      | e    | f       |
+--------+-------+---------+--------+------+---------+
| STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER |
+--------+-------+---------+--------+------+---------+

Argumen Null

Jika argumennya null , lalu null dikembalikan.

SELECT JSON_TYPE(null);

Hasil:

+-----------------+
| JSON_TYPE(null) |
+-----------------+
| NULL            |
+-----------------+

Jumlah Parameter Salah

Memanggil JSON_TYPE() tanpa argumen menghasilkan kesalahan:

SELECT JSON_TYPE();

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'

Sama halnya jika terlalu banyak argumen yang dilontarkan:

SELECT JSON_TYPE(1, 2);

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bermigrasi dari MySQL Enterprise ke MariaDB 10.3

  2. Cara Menginstal MariaDB 10 di RHEL 8

  3. Atur Set Karakter dan Susunan Kolom di MariaDB

  4. Bagaimana DEGREES() Bekerja di MariaDB

  5. Cara Mendeteksi jika suatu Nilai Berisi Setidaknya Satu Digit Numerik di MariaDB