Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bendasvadim/dd90b9d2c26ae3c4fe365377b122116a to your computer and use it in GitHub Desktop.
Save bendasvadim/dd90b9d2c26ae3c4fe365377b122116a to your computer and use it in GitHub Desktop.
Работа с JSON данными в СУБД Mysql 5.7
Выборка из масива Тип поля в БД должен быть json
В поле хранится по типу [one,two,three,four,five]
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,'[value]');
В поле хранится по типу ID ТАБЛИЦЫ 1 - ["one","two","three","four","five"]
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,'['\"value\"']');
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,JSON_ARRAY('value'));
SELECT JSON_EXTRACT((SELECT `field` FROM `table_name` WHERE `id` = 1),'$[index]') as title;
Выборка из обьекта
В поле хранится по типу ID ТАБЛИЦЫ 2 - {"one":1,"two":2,"three":3,"four":4,"five":5}
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,'{\"key\":value}');
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,JSON_OBJECT('value'));
SELECT * FROM `table_name` WHERE JSON_CONTAINS(`field`,JSON_OBJECT('key','value','key2','value2'));
SELECT JSON_EXTRACT((SELECT `field` FROM `table_name` WHERE `id` = 2),'$.*') as title;
SELECT JSON_EXTRACT((SELECT `field` FROM `table_name` WHERE `id` = 2),'$.key') as title;
Более сложная выборка
В поле хранится по типу ID ТАБЛИЦЫ 3
{"0":"one",
"1":{"one":1,"two":2,"five":["value1","value2"],"four":4,"three":3},
"2":["six","seven","eight"],"3":"five","key":"value"}
SELECT JSON_EXTRACT((SELECT `field` FROM `table_name` WHERE `id` = 3),'$.*.key') as title;
SELECT JSON_EXTRACT((SELECT `field` FROM `table_name` WHERE `id` = 3),'$.*.key[index]') as title;
SELECT `field`, `field2`->'$.*.key' AS `field2` FROM `table_name`;
SELECT `field`, `field2` AS `field2` FROM `table_name` WHERE `field2`->'$.*.key[index]' IS NOT NULL;
Источник
https://webformyself.com/rabota-s-json-dannymi-v-subd-mysql-5-7/
https://www.youtube.com/watch?time_continue=1082&v=riOQT4HS7yI
@Farrien
Copy link

Farrien commented Aug 27, 2021

Блин спасибо! Долго гуглил как массив сделать с динамическими данными и вот оно из примера - JSON_OBJECT !

@noistudio
Copy link

Да вот только вся проблема, что с русским текстом в json это все не работает

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment