Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
Привет,

Есть Json:
[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]


Подскажите как с посмощью JSON_QUERY или подобного получить?
["1",:"2","33873","444"]


Спасибо!
20 сен 18, 13:26    [21680736]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
Ну что Glory ушел теперь и ответить некому?
20 сен 18, 13:55    [21680789]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Оно?
20 сен 18, 14:11    [21680819]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Примерно такой изврат поможет (увы не знаю корректного способа генерации JSON без имени нодов):

DECLARE @json NVARCHAR(MAX) = '[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]'

SELECT STUFF((
    SELECT ',"' + Code + '"'
    FROM OPENJSON(@json) WITH (Code VARCHAR(10))
    FOR XML PATH('')), 1, 1, '[') + ']'
20 сен 18, 14:55    [21680879]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
нереплейсить результат :)

автор
DECLARE @a varchar(8000) = '[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]'
SELECT REPLACE(REPLACE(REPLACE(@a,'{"Code":',''),'},',','),'}','')
20 сен 18, 14:56    [21680883]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
TaPaK
нереплейсить результат :)

автор
DECLARE @a varchar(8000) = '[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]'
SELECT REPLACE(REPLACE(REPLACE(@a,'{"Code":',''),'},',','),'}','')


:D
20 сен 18, 14:57    [21680887]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
Maxx
Оно?


Почти,
таким кодом
SELECT * FROM openjson('[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]')  with (code NVARCHAR(max) '$.Code')

получаю обратно таблицу

А таким
SELECT * FROM openjson('[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]')  with (code NVARCHAR(max) '$.Code') FOR JSON PATH

возвращаюсь в исходное положение

а искомое все таки
["1",:"2","33873","444"]


К сообщению приложен файл. Размер - 9Kb
20 сен 18, 15:10    [21680909]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
AlanDenton
Примерно такой изврат поможет (увы не знаю корректного способа генерации JSON без имени нодов):

DECLARE @json NVARCHAR(MAX) = '[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]'

SELECT STUFF((
    SELECT ',"' + Code + '"'
    FROM OPENJSON(@json) WITH (Code VARCHAR(10))
    FOR XML PATH('')), 1, 1, '[') + ']'


Вот это работает! Спасибо, осталось понять как!
20 сен 18, 15:11    [21680912]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
SELECT CONCAT('["',STRING_AGG(Code,'","'),'"]')
FROM openjson('[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]')  with (code NVARCHAR(max) '$.Code')
20 сен 18, 15:15    [21680921]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
TaPaK
SELECT CONCAT('["',STRING_AGG(Code,'","'),'"]')
FROM openjson('[{"Code":"1"},{"Code":"2"},{"Code":"33873"},{"Code":"444"}]')  with (code NVARCHAR(max) '$.Code')


Ну это слишком STRING_AGG
20 сен 18, 15:27    [21680940]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Т-Миронов
Ну это слишком STRING_AGG

шо STUFF шо STRING_AGG полностью легальный ф-ции T-SQL
20 сен 18, 15:37    [21680957]     Ответить | Цитировать Сообщить модератору
 Re: Json Array  [new]
Т-Миронов
Member

Откуда:
Сообщений: 3216
Maxx
Т-Миронов
Ну это слишком STRING_AGG

шо STUFF шо STRING_AGG полностью легальный ф-ции T-SQL


STRING_AGG отсутсвует в 2016 а у меня 2016й
но все равно Всем спасибо все очень помогли!
20 сен 18, 16:54    [21681133]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить