Понякога може да се наложи да търсите JSON масив от обекти, да извлечете JSON данни или да извлечете JSON данни в MySQL. В тази статия ще разгледаме как да потърсите JSON колона в MySQL.
Как да заявя колона JSON в MySQL
Да приемем, че имате следната таблица user(id, details) където id е цяло число и първичен ключ, докато подробности е колона с тип данни JSON.
<предварително създаване на потребители на таблицата ( id int auto_increment първичен ключ, подробности json );Ще вмъкнем следните JSON данни в нашата таблица.
вмъкнете в стойности за потребители(подробности)( '{ "page":"/" , "name":"Safari", "os":"Mac", "spend":[100, 50] "resolution":{ "x":1920, "y":1080 } }'),( '{ "page":"/products", "name":"Chrome", "os":"Windows", "spend":[ 150, 250] "резолюция":{ "x":1680, "y":1050 } }'),( '{ "страница":"/обувки", "име":"Firefox", "os":" Windows", "spend":[200 300] "резолюция":{ "x":1280, "y":800 } }');
Как да извлечем данни от колоната JSON в MySQL
MySQL предоставя два оператора ( -> и ->> ) за извличане на данни от JSON колони.
->> ще получи стойността на низа, докато -> ще извлече стойност без кавички.
Ето SQL заявката за извличане на името на браузъра от подробности колона
mysql> изберете идентификатор, подробности->>'$.name' като browser_str, подробности->'$.name' като име на браузъра от потребители;+----+----------- ---+--------------+| ID | браузър_str | име_на_браузър |+----+--------------+--------------+| 1 | "Сафари" | Сафари || 2 | "Хром" | Chrome || 3 | "Firefox" | Firefox |+----+--------------+--------------+
Както можете да видите ->> връща изход като низове в кавички, докато -> връща стойности такива, каквито са.
Можете също да използвате тези оператори в клаузата WHERE, както е показано по-долу.
mysql> изберете идентификатор, подробности->>'$.name' като browser_str, подробности->'$.name' като име на браузъра от потребители, където ->>'$.name'="Chrome";+--- -+--------------+--------------+| ID | браузър_str | име_на_браузър |+----+--------------+--------------+| 2 | "Хром" | Chrome |+----+--------------+--------------+
Ако искате да извлечете resolution.x стойност, тоест от обект, тогава можете да го направите с помощта на оператора точка (.), както е показано по-долу.
mysql> изберете подробностиs->'$.resolution.x'
като ширина от потребителите;+----+-----------+| ID | ширина |+----+-----------+| 1 | 1920 || 2 | 1680 || 3 | 1280 |+----+-----------+
По същия начин, ако искате да извлечете елемент на масив от JSON, тогава можете да получите достъп до тях, като използвате квадратни скоби „[ ]“ и индекс на елемента на масива. Ето SQL заявката за извличане на първия елемент от масива spend .
mysql> изберете подробностиs->>'$.spend[0]'
като разходи от потребители;+----+-----------+| ID | харчи |+----+-----------+| 1 | 100 || 2 | 150 || 3 | 200 |+----+-----------+
Извличане на JSON с помощта на Ubiq
Инструментът за отчитане на Ubiq поддържа всички горепосочени SQL заявки и улеснява визуализирането на SQL резултатите по различни начини. Ето първата SQL заявка, спомената по-горе, в Ubiq.
Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!