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

Документ JSON хранится в поле nvarchar(4000).
Да и таблица простая (id int, nvarchar(4000)).
...
Рейтинг: 0 / 0
А если в поле JSON, можно ли искать в их множестве?
    #39932101
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да можно, почему нет-то? Раз можно получить, то это полученное можно с чем-то сравнить, верно?
...
Рейтинг: 0 / 0
А если в поле JSON, можно ли искать в их множестве?
    #39932115
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
А если в поле JSON, можно ли искать в их множестве?
    #39932116
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
А если в поле JSON, можно ли искать в их множестве?
    #39932131
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex, Спасибо!
...
Рейтинг: 0 / 0
А если в поле JSON, можно ли искать в их множестве?
    #39932145
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно не выходит.
Хелп плизз...

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

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


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