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

Cara Query kolom JSON di MySQL

Terkadang Anda mungkin perlu mencari array objek JSON, mengekstrak data JSON, atau mengambil data JSON di MySQL. Pada artikel ini, kita akan melihat bagaimana query kolom JSON di MySQL.


Cara Query kolom JSON di MySQL

Katakanlah Anda memiliki tabel berikut pengguna(id, detail) dimana id adalah bilangan bulat dan kunci utama sedangkan detail adalah kolom tipe data JSON.

create table users(
    id int auto_increment primary key,
    details json
   );

Kami akan memasukkan data JSON berikut ke dalam tabel kami.

insert into users(details)
    values(
      '{ "page": "/" , 
         "name": "Safari", 
         "os": "Mac", 
         "spend": [100, 50]
         "resolution": { "x": 1920, "y": 1080 } }'
),
(
      '{ "page": "/products", 
         "name": "Chrome", 
         "os": "Windows", 
         "spend": [150, 250]
         "resolution": { "x": 1680, "y": 1050 } }'
),
(
     '{ "page": "/shoes", 
        "name": "Firefox", 
        "os": "Windows", 
        "spend": [200,300]
        "resolution": { "x": 1280, "y": 800 } }'
);


Cara Mengambil data dari kolom JSON di MySQL

MySQL menyediakan dua operator ( -> dan ->> ) untuk mengekstrak data dari kolom JSON.

->> akan mendapatkan nilai string sementara -> akan mengambil nilai tanpa tanda kutip.

Berikut adalah kueri SQL untuk mengekstrak nama browser dari detail kolom

mysql> select id, 
       details->>'$.name' as browser_str,
       details->'$.name' as browser_name
       from users;
+----+--------------+--------------+
| id | browser_str  | browser_name |
+----+--------------+--------------+
|  1 | "Safari"     |  Safari      |
|  2 | "Chrome"     |  Chrome      |
|  3 | "Firefox"    |  Firefox     |
+----+--------------+--------------+

Seperti yang Anda lihat ->> mengembalikan output sebagai string yang dikutip, sementara -> mengembalikan nilai apa adanya.

Anda juga dapat menggunakan operator ini dalam klausa WHERE seperti yang ditunjukkan di bawah ini.

mysql> select id, 
       details->>'$.name' as browser_str,
       details->'$.name' as browser_name
       from users
       where ->>'$.name'="Chrome";
+----+--------------+--------------+
| id | browser_str  | browser_name |
+----+--------------+--------------+
|  2 | "Chrome"     |  Chrome      |
+----+--------------+--------------+

Jika Anda ingin mengambil resolusi.x nilai, yaitu dari suatu objek, maka Anda dapat melakukannya dengan menggunakan operator titik (.), seperti yang ditunjukkan di bawah ini.

mysql> select details->'$.resolution.x' as  width
       from users;
+----+-----------+
| id |  width    |
+----+-----------+
|  1 | 1920      |
|  2 | 1680      |
|  3 | 1280      |
+----+-----------+

Demikian pula, jika Anda ingin mengekstrak elemen array dari JSON, Anda dapat mengaksesnya menggunakan tanda kurung siku '[ ]' dan indeks elemen array. Berikut adalah query SQL untuk mengekstrak elemen pertama dari array spend .

mysql> select details->>'$.spend[0]' as spend
       from users;
+----+-----------+
| id |  spend    |
+----+-----------+
|  1 | 100       |
|  2 | 150       |
|  3 | 200       |
+----+-----------+


Ekstrak JSON menggunakan Ubiq

Alat Pelaporan Ubiq mendukung semua kueri SQL di atas dan memudahkan untuk memvisualisasikan hasil SQL dengan cara yang berbeda. Ini adalah query SQL pertama yang disebutkan di atas, di Ubiq.

Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari 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. Memecahkan Indeks untuk pengguna tabel rusak; coba perbaiki

  2. Menambahkan nol di depan ke beberapa nilai di kolom di MySQL

  3. MySQL Mengubah Prosedur Tersimpan

  4. Sintaks SQL DROP DATABASE – Didaftarkan oleh DBMS

  5. Memahami Statistik HAProxy untuk MySQL &PostgreSQL