powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогит написать запрос с использованием JSON
2 сообщений из 2, страница 1 из 1
Помогит написать запрос с использованием JSON
    #40097918
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Есть таблица 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
Помогит написать запрос с использованием JSON
    #40097923
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогит написать запрос с использованием JSON
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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