2016-03-04 4 views
1

Я новичок в регулярном выражении, я сохранил данные JSON в таблице. Я хочу получить данные на основе userId, userId является свойством объекта Users.Как искать данные JSON в mysql, используя регулярное выражение

Пример: Я хочу, чтобы извлечь все записи, если пользователи содержат 513

Мой образец таблицы данных:

Table name:share 

Id name   sharedusers 
1 xxxx   {"accessType":0,"permission":"1","specificUsers": 
        [{"users":"502,512,513","permission":"1"}]} 

2 yyy    {"accessType":0,"permission":"1","specificUsers": 
        [{"users":"47,52,60","permission":"1"}]} 

3 zzzz   {"accessType":0,"permission":"1","specificUsers": 
        [{"users":"502,512,513","permission":"1"}]} 

Я попробовал этот код, но я получаю все записи, фильтр не является применяется

SELECT * FROM share where sharedusers REGEXP '"users":"[[:<:]]513[[:>:]]"'; 

Пожалуйста, дайте какой-либо образец.

+0

Попробуйте «REGEXP» «пользователи»: «[^»] * [[: <:]]513[[:>:]] '' –

+0

Отлично, я отправил в качестве ответа объяснение изменений. –

ответ

1

Вы можете использовать

REGEXP '"users":"[^"]*[[:<:]]513[[:>:]]' 

Здесь [^"]* (кроме " 0+ символов) добавляется и окончательный " удаляется эффективно соответствовать 513 как целое слово внутри пары кавычек, которые окружают значение.

+0

как преобразовать это ('"users": "[^"] * [[: <:]]513[[:>:]]') RegEx to String, определяющее регулярное выражение (например, '^ foo'). Буква литералов регулярных выражений (например,/^ foo /). Объект регулярных выражений (например, новый RegExp (/ John /)). –

+0

Если вам нужна дополнительная информация, просмотрите эту ссылку https://docs.strongloop.com/display/public/LB/Where+filter#Wherefilter-Regularexpressions –

+0

Вы имеете в виду, что вам нужно JavaScript-regex? Используйте '/" users ":" [^ "] * \ b513 \ b /' –

0

Обновите версию MySQL 5.7 и используйте встроенные функции для опроса столбцов JSON.

+0

Спасибо за ваш ответ. Я попробую. –

Смежные вопросы