#sql #json #azure #sql-server-2012
Вопрос:
У меня есть строковый столбец в таблице SQL-сервера в Azure, который содержит следующие данные:
{
"status": "success",
"data": [
{
"name": "Jane",
"type": 0
},
{
"name": "John",
"type": 0
}
]
}
Как его можно преобразовать в строку, разделенную запятыми, содержащую "Jane, John"
?
Комментарии:
1.
"data"
Всегда будет одного и того же размера? Например, всегда ли это будут два элемента или вам нужно, чтобы они были динамичными?2. Привет, «данные» не имеют постоянного размера, они должны быть динамичными.
Ответ №1:
Вот как этого добиться с помощью фрагмента моего старого кода, вы должны иметь возможность просматривать таблицу и делать это для каждой строки. Возможно, есть более быстрый способ сделать это, но это сработает.
DECLARE @JSON NVARCHAR(200) = '{"status": "success", "data": [{"name": "Jane", "type": 0},{"name": "John", "type": 0}]}',
@result nvarchar(max) = ''
SELECT @result = @result [value] N', '
FROM (
SELECT DISTINCT data.value
FROM OPENJSON(@JSON, '$.data') as jsondata
CROSS APPLY OPENJSON(jsondata.value) as data
WHERE data.[key] = 'name') a
select @result = substring(@result, 1, (LEN(@result)-1))
select @result