2015-09-06 3 views
-1

Я храню данные json в одном из полей таблицы, и у меня возникают проблемы с использованием REGEXP, чтобы вернуть правильную запись В принципе, она соответствует другим атрибутам в объекте JSON, что она не должнаMySQL regexp search JSON array

Пример JSON

{ 
    "data": { 
    "en": { 
     "containers": [ 
     { 
      "id": 1441530944931, 
      "template": "12", 
      "columns": { 
      "column1": [ 
       "144", 
       "145", 
       "148" 
      ], 
      "column2":[ 
       "135", 
       "148", 
       "234" 
      ] 
      } 
     } 
     ], 
     "left": "152", 
     "right": "151" 
    }, 

    } 
} 

Теперь я хотел бы искать массив столбцов против определенного значения (т.е. 148)

Сейчас меня есть ниже запрос,

WHERE (w.`_attrs` REGEXP '"column[0-9]":.*\\[.*"148".*\\]' 

, который прекрасно работает Однако, если изменить значение от 148 до 152 или 151, он также работает По какой-то причине запрос соответствует атрибуту левого и права, а также, но это не является желательно

Любая помощь?

Благодаря

+0

Вы имеете в виду, что на основании приведенных данных образца, если вы согласитесь на '152', он вернет положительный результат? –

+0

Исправить. Он также будет соответствовать 151. В принципе, он будет соответствовать любому ключу, значение которого заключено в «». – Thomas

+0

Как будто он полностью пропускает «столбец [0-9]» :. part – Thomas

ответ

0

Или ... Перейти на MariaDB 10 и индексировать компонентами JSON.