SQL TABLE vers JSON sans informations de colonne SQL
Nov 26 2020
J'essaie d'analyser les données de la table en JSON et dans le processus, je souhaite ignorer les noms de colonne de la table dans la conversion Post en JSON. Voici l'exemple d'extrait de code.
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"}
Appréciez la direction!
Réponses
1 lptr Nov 27 2020 at 12:51
- concaténation et agrégation de chaînes (string_agg () pour sql2017 et versions ultérieures ou pour xml path () pour sql2016)
select string_agg(concat('{"', string_escape(k1, 'json'), '":"', string_escape(v1, 'json'), '"}'), ',') /*within group (order by k1)*/
from @table1