В рамках более крупного запроса на выборку мне нужно извлечь значения из объектов массива json в виде строки, разделенной запятыми.
Мне удалось получить массив json из объекта json:
SELECT * FROM (SELECT json_extract(Site.Login, '$.Uris') FROM Site);
Второй вариант, дающий тот же результат:
SELECT value FROM json_each(Site.Login), Site WHERE json_each.key = 'Uris';
Тест с одной строкой, дающий желаемый результат:
SELECT group_concat(json_extract(value, '$.Uri')) as login_uri FROM json_each('[{"Uri":"https://cnn.com"},{"Uri":"https://bbc.com"},{"Uri":"https://reuters.com"}]');
Я потерян в матрице.Я пытался различными способами комбинировать код запроса выше, но я не могу добиться прогресса.
Пример ячейки Site.Login.Число объектов Uri может быть от 0 до бесконечного.
{
"Uris": [
{"Uri":"https://cnn.com"},
{"Uri":"https://bbc.com"},
{"Uri":"https://reuters.com"}
],
"Username": "ghhhhhhhhhhhhhfgggggggggggggggg",
"Password": "hgfhfghfghfgh",
"PasswordRevisionDate": "2019-01-07T21:51:42.65Z",
"Totp": "gffffffffffffffffffffffhhhhhhhhhhhhhhhfghghgfh",
"Name": "hgfhfghfghfghfgh",
"PasswordHistory": [
{
"Password": "ghfghfghfghfghfg",
"LastUsedDate": "2019-01-07T21:51:42.65Z"
}
]
}
Полный макет таблицы Site:
CREATE TABLE "Site" (
"Id" varchar primary key not null ,
"FolderId" varchar ,
"UserId" varchar ,
"OrganizationId" varchar ,
"Name" varchar ,
"Notes" varchar ,
"Fields" varchar ,
"PasswordHistory" varchar ,
"Login" varchar ,
"Card" varchar ,
"Identity" varchar ,
"SecureNote" varchar ,
"Favorite" integer ,
"Edit" integer ,
"OrganizationUseTotp" integer ,
"RevisionDateTime" bigint ,
"Type" integer ,
"Data" varchar )
Запрос на выборку должен возвращать столбец с именем login_uri, содержащий извлеченныеЗначения объектов массива json в виде объединенной строки: https://cnn.com,https://bbc.com,https://reuters.com