powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JSON_VALUE. Непонятки при выборке из поля типа JSON
7 сообщений из 7, страница 1 из 1
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096255
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня!
Есть безобидный JSON, к примеру:
[
{"clientID": "337110",
"clientSessionID": "8479bbe1-2ffc-eb11-80d8-0050568f2a55"
}
]

ели делать из него выборку через переменную:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE 
@json NVARCHAR(max)=
'[{"clientID": "337110",
    "clientSessionID": "8479bbe1-2ffc-eb11-80d8-0050568f2a55"
  }
]'
  SELECT clientID,
       clientSessionID
       FROM OPENJSON(@json)
  WITH 
  (
  clientID int '$.clientID',
  clientSessionID NVARCHAR(1500) '$.clientSessionID'
  )


то все прекрасно отрабатывается.
Но если этот JSON загнать в таблицу и сделать нечто подобное:
Код: sql
1.
2.
3.
4.
5.
SELECT
JSON_VALUE(zk_details,'$.clientID') AS clientID,
JSON_VALUE(zk_details,'$.clientSessionID') AS clientSessionID
FROM dbo.sys_ZK_LOADED
WHERE ISJSON(zk_details)>0


то в результате возвращает NULL NULL
Подскажите, плз, в чем грабли. Заранее благодарен!
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096261
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobby,

Код: sql
1.
2.
3.
4.
5.
SELECT
JSON_VALUE(zk_details,'$[0].clientID') AS clientID,
JSON_VALUE(zk_details,'$[0].clientSessionID') AS clientSessionID
FROM (SELECT @json as zk_details ) a--dbo.sys_ZK_LOADED
WHERE ISJSON(zk_details)>0
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096265
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вариант возвращает таблицу из всех элементов в массиве
Второй конкретное значение, и для этого ему нужно указать, какой из элементов вернуть. Например, первый (который нулевой).


Код: sql
1.
2.
3.
4.
5.
SELECT
JSON_VALUE(zk_details,'$[0].clientID') AS clientID,
JSON_VALUE(zk_details,'$[0].clientSessionID') AS clientSessionID
FROM dbo.sys_ZK_LOADED
WHERE ISJSON(zk_details)>0
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096268
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL,
JSON состоит не из одной пары, он, к примеру:

[{"clientID": "337110",
"clientSessionID": "8479bbe1-2ffc-eb11-80d8-0050568f2a55"
}
,
{"clientID": "337110",
"clientSessionID": "8479bbe1-2ffc-eb11-80d8-0050568f2a55"
}
............
]
пробовал убирать скобки.
При этом вообще ничего не возвращает, если запрос делать именно из таблицы
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096273
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,
у меня задача выдернуть все значения
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096275
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobby
msLex,
К сожалению Ваш вариант тоже ничего не возвращает. А у меня задача выдернуть все значения




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
	a.*
FROM dbo.sys_ZK_LOADED z
cross apply (
  SELECT clientID,
       clientSessionID
       FROM OPENJSON(z.zk_details)
  WITH 
  (
  clientID int '$.clientID',
  clientSessionID NVARCHAR(1500) '$.clientSessionID'
  )
) a
WHERE ISJSON(z.zk_details)>0
...
Рейтинг: 0 / 0
JSON_VALUE. Непонятки при выборке из поля типа JSON
    #40096278
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,
Огромнейшее спасибо!!!! Все заработало!!!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JSON_VALUE. Непонятки при выборке из поля типа JSON
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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