У меня есть столбец JSON с именем authorjson, в котором есть данные json.Я хочу найти всех пользователей, чьи имена начинаются с заданной строки - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть гибридная база данных, в которой есть как обычные столбцы, так и столбцы с данными json.У меня есть эти данные в столбце authorjson

{
                "profileUrl": "https://disqus.com/by/mnaid-233509073ed3432027d48b1a83f5fbd2/",
                "isPrivate": false,
                "isPrimary": true,
                "about": "",
                "username": "mnaid-233509073ed3432027d48b1a83f5fbd2",
                "url": "",
                "id": "250728493",
                "isAnonymous": false,
                "location": "",
                "isPowerContributor": false,
                "signedUrl": "",
                "joinedAt": "2017-05-03T10:40:52",
                "disable3rdPartyTrackers": true,
                "name": "baggiebuoy"
            }

"Цель состоит в том, чтобы найти всех пользователей, имена которых начинаются с заданной строки."

Вот моя попытка выполнить запрос sql:

SELECT JSON_EXTRACT(authorsjson, '$.name') 
FROM altthree 
WHERE JSON_EXTRACT(authorsjson, '$.name') like 'b%' ;

Я получаю один пустой столбец.Кто-нибудь знает, как я могу заставить это работать?

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Вы должны добавить двойные кавычки перед строкой поиска, ИЛИ еще лучше, чтобы использовать JSON_UNQUOTE:

SELECT JSON_EXTRACT(authorsjson, '$.name')
FROM altthree 
WHERE JSON_UNQUOTE(JSON_EXTRACT(authorsjson, '$.name')) like 'b%' ; 
1 голос
/ 28 апреля 2019

Ваш подход кажется почти нормальным, просто поле 'name' вложено на один уровень глубже, попробуйте изменить третью строку следующим образом:

WHERE JSON_EXTRACT(authorsjson, '$.author.name') like 'b%' ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...