SQL TABLE para JSON sem informações de coluna SQL

Nov 26 2020

Estou tentando analisar os dados da tabela em JSON e, no processo, desejo ignorar os nomes das colunas da tabela na pós-conversão para JSON. Abaixo está o snippet de amostra.

DECLARE @table1 TABLE (k1 nvarchar(max), v1 nvarchar(max))

-- Note k1 is unique
INSERT INTO @table1 (k1,v1) VALUES( 'Apple', 'One')
INSERT INTO @table1 (k1,v1) VALUES( 'Banana', 'Two')
INSERT INTO @table1 (k1,v1) VALUES( 'Orange', 'Three')

SELECT k1, v1 FROM @table1
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

--output: {"k1":"Apple","v1":"One"},{"k1":"Banana","v1":"Two"},{"k1":"Orange","v1":"Three"}
-- Expected: {"Apple","One"},{"Banana","Two"},{"Orange","Three"}

Aprecie a direção!

Respostas

1 lptr Nov 27 2020 at 12:51

--concatenação e agregação de string (string_agg () para sql2017 e posterior ou para caminho xml () para sql2016)

select string_agg(concat('{"', string_escape(k1, 'json'), '":"', string_escape(v1, 'json'), '"}'), ',') /*within group (order by k1)*/
from @table1