Запрос SELECT для печати в виде списка JSON в одной строке

Как вывести имена в списке строк в одну строку?

Предположим, у меня есть такие данные:

SELECT XName FROM X_Table --(table has other columns too)

XName
-------------
Foo
Bar

Как получить такие значения:

["foo", "bar"]

@ G.Stoynev Я проверил ваш вариант повторяющегося вопроса, но я не могу получить все результаты в одной строке. Какая-нибудь помощь по этому поводу?

Chenna 28.11.2018 07:17
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
1
1 806
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, вы смотрите на комбинацию синтаксиса преобразования и отмены преобразования JSON, как показано ниже.

See working demo

Declare @js nvarchar(max)

SET @js= (SELECT XName FROM X_Table for json path)

select * from  OPENJSON (@js) WITH ( Xname nvarchar(max) N'$.XName')

И если вы хотите избежать использования переменной @js, вы можете сделать

select * from  OPENJSON 
((SELECT XName FROM XTable for json path))-- note double parenthesis
WITH ( Xname nvarchar(max) N'$.XName')
Ответ принят как подходящий

Из примера, приведенного по ссылке Г.Стойнева, можно сделать следующее:

SELECT JSON_QUERY
(
    (
        SELECT JSON_QUERY
        (
            '[' + STUFF(( SELECT ',' + '"' + convert(varchar(10), XName) + '"' 
            FROM dbo.X_Table
            FOR XML PATH('')),1,1,'') + ']' 
        ) Categories  
        FOR JSON PATH , WITHOUT_ARRAY_WRAPPER 
    ), '$.Categories' 
)

Другие вопросы по теме