2015-12-09 7 views
0

У меня есть таблица, которая выглядит следующим образом:Как получить значения из поля JSon

CREATE TABLE `testtable` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `data` json DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

поле JSON имеет данные, что выглядит следующим образом:

{'a1': 'Title', 'b17': 'Message'} 

Я хочу, чтобы выбрать идентификатор и a1 (JSON). Я не хочу b17. Есть ли способ сделать это?

ответ

0

Если вы используете MySQL 5.7.8 или более позднюю версию, вы можете воспользоваться типом данных JSON поддерживается там:

https://dev.mysql.com/doc/refman/5.7/en/json.html

Вы можете использовать выражение Path JSON для извлечения значения из поля.

В противном случае вы задерживаете извлечение значения через функции SUBSTR() и POSITION() - пример hokey ниже - при условии, что форматирование значений достаточно предсказуемо или же обработка результата вне SQL.

SELECT id, SUBSTR(hackedJSON, 1, POSITION("'" IN hackedJSON) - 1) a1 
    FROM (
     SELECT id, SUBSTR(data, POSITION("'a1':" IN data) + 7) hackedJSON 
      FROM testtable) a 
Смежные вопросы