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!