Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А если в поле JSON, можно ли искать в их множестве? / 6 сообщений из 6, страница 1 из 1
28.02.2020, 10:51
    #39932085
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
Скажите, вот в 2017 версии, в поле JSON можно, допустим, найти значение атрибута.
А можно ли получить все записи из таблицы, где некий атрибут в JSON'ах равен искомому значению?
В общем, какбы пройтись по всем записям, и проверять внутряк JSON.

Документ JSON хранится в поле nvarchar(4000).
Да и таблица простая (id int, nvarchar(4000)).
...
Рейтинг: 0 / 0
28.02.2020, 11:22
    #39932101
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
Да можно, почему нет-то? Раз можно получить, то это полученное можно с чем-то сравнить, верно?
...
Рейтинг: 0 / 0
28.02.2020, 12:04
    #39932115
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
...
Рейтинг: 0 / 0
28.02.2020, 12:07
    #39932116
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
Akina,
а можно попросить привести пример запроса?

Экспериментирую по примерам и, не совсем получается.
Значит, если я делаю такую логику:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @json NVARCHAR(4000)
SET @json = N'[  
  {"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
  {"id": 5, "info": {"name": "Jane", "surname": "Smith", "skills": ["SQL", "C#", "Azure"]}, "dob": "2005-11-04T12:00:00"}  
]';

SELECT [Name]
FROM OPENJSON(@json)
WITH (
    [Name]      VARCHAR(200)    N'$.info.name'
)
WHERE [Name] = 'Jane'


тут срабатывает. Поиск выдаёт найденную строку.

Теперь, закидываю JSON-данные в поля во временную таблицу
Код: sql
1.
2.
3.
4.
declare @Persons table(id int, [Name] nvarchar(4000))
insert into @Persons(id,[Name])
select 1, N'[{"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25}]' union all
select 2, N'[{"id": 5, "info": {"name": "Jane", "surname": "Smith", "skills": ["SQL", "C#", "Azure"]}, "dob": "2005-11-04T12:00:00"}]'


как тогда здесь задействовать мой запрос?
Код: sql
1.
2.
3.
4.
5.
6.
SELECT [Name]
FROM OPENJSON(@json)
WITH (
    [Name]      VARCHAR(200)    N'$.info.name'
)
WHERE [Name] = 'Jane'


как вместо переменной @json указать нужное поле из таблицы?
...
Рейтинг: 0 / 0
28.02.2020, 12:34
    #39932131
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
msLex, Спасибо!
...
Рейтинг: 0 / 0
28.02.2020, 13:40
    #39932145
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А если в поле JSON, можно ли искать в их множестве?
Всё равно не выходит.
Хелп плизз...

В таблице, в поле, данные хранятся как массив,
id1, '[{info:1},{info:2}]'
id2, '[{info:1},{info:2},{info:3},{info:4}]'

как вывести все значения инфо?
или, лучше, как отобрать записи, где есть, скажем, info:3?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А если в поле JSON, можно ли искать в их множестве? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]