Массив JSON_VALUE TSQL без имени

#json #tsql

#json #tsql

Вопрос:

Пытаюсь заставить следующее работать в MS SQL 2016, но мне нужен гуру MS SQL JSON, чтобы помочь.

У меня есть таблица с JSON в текстовой строке

   [
  {
    "static-list-id": 37,
    "internal-list-id": 41,
    "timestamp": 1554831874747,
    "vid": 9350104,
    "is-member": true
  },
  {
    "static-list-id": 39,
    "internal-list-id": 43,
    "timestamp": 1554831874931,
    "vid": 9350104,
    "is-member": true
  }
  ]'
  

Вот мой оператор SQL, думаю, мне может понадобиться JSON_QUERY

 SELECT 
    JSON_VALUE([MyNVarCharWithJSONColumn],'strict $."static-list-id"') AS static_list_id
FROM
  [MyTable] C
  WHERE ISJSON([MyNVarCharWithJSONColumn])>0
  

Это результаты, которые я хотел бы получить из инструкции SQL, по одной строке на

 static_list_id
--------------
37
39
  

Большое спасибо за любую помощь

Ответ №1:

Вы могли бы использовать:

 SELECT a.static_list_id
FROM MyTable 
CROSS APPLY OPENJSON(MyNVarCharWithJSONColumn)
WITH (static_list_id INT N'$."static-list-id"') AS a;
  

db<>демонстрация скрипки

Комментарии:

1. Это то, о чем я просил, спасибо. Как я могу добавить еще один столбец из JSON в список?

2. @Simon, вы можете поместить все необходимые столбцы в предложение WITH (через запятую).