Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогит написать запрос с использованием JSON / 2 сообщений из 2, страница 1 из 1
16.09.2021, 03:29
    #40097918
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогит написать запрос с использованием JSON
Добрый день,

Есть таблица MyFiles полями Id, FileName, FolderName, KeyPairs. Последнее поле (nvarchar(MAX)) содержит текст в формате JSON типа:
Код: xml
1.
{"Licence No ": "12345", "ID Number ": "345678", "Class ": "1AC ", "Card Number ": "6 666 666 666 ", "Expiry Date ": "22 DEC 2016 "}



Мне нужно написать запрос который вернет мне:
Код: sql
1.
Id, FileName, FolderName, [Licence No], Class, [Expiry Date]


с фильтром где [Expiry Date] позже текущей даты.

Если что-то из [Licence No], Class, [Expiry Date] отсутствует в поле KeyPairs, то вернуть NULL в этом столбце.

Спасибо.
...
Рейтинг: 0 / 0
16.09.2021, 07:00
    #40097923
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогит написать запрос с использованием JSON
Roust_m,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
declare @MyFiles table (
  [Id] int identity(1,1),
  [FileName] sysname,
  [FolderName] sysname,
  [KeyPairs] nvarchar(max)
);

insert into @MyFiles values 
('test.txt', 'C:\', '{"Licence No ": "12345", "ID Number ": "345678", "Class ": "1AC ", "Card Number ": "6 666 666 666 ", "Expiry Date ": "22 DEC 2016 "}'),
('test.txt', 'C:\', '{"Licence No ": "54321", "ID Number ": "333333", "Class ": "1AC ", "Card Number ": "7 777 777 777 ", "Expiry Date ": "17 DEC 2021 "}');

with x as (
    select
          f.[Id],
          f.[FileName],
          f.[FolderName],
          o.[License No],
          o.[ID Number],
          o.[Class],
          o.[Card Number],
          o.[Expiry Date],
          try_parse(o.[Expiry Date] as datetime) as [date]
    from @MyFiles f
    cross apply openjson (f.[KeyPairs])  with (
      [License No] varchar(255) '$."Licence No "',
      [ID Number] varchar(255) '$."ID Number "',
      [Class] varchar(255) '$."Class "',
      [Card Number] varchar(255) '$."Card Number "',
      [Expiry Date] varchar(255) '$."Expiry Date "'
    ) o
)
select * from x where [date] >= getdate();
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогит написать запрос с использованием JSON / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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