Я пытаюсь получить следующую строку JSON:
[{
"Name": "John",
"AccountType": 1
},
{
"Name": "Steven",
"AccountType": 1
}
]
Я знаю, что AccountType всегда будет равен 1, и у меня есть строковая переменная в следующем формате «Джон; Стивен; Брайан; Майк»
Я пытался создать этот JSON, используя XML PATH и функцию splitToTable, но безуспешно. Как я могу достичь этого?
Заранее спасибо.


Вы можете использовать string_split() и for json:
declare @str nvarchar(max) = 'John;Steven;Brian;Mike';
select *
from (
select value as [Name], 1 as [AccountType]
from string_split(@str, ',')
) t
for json auto;
В SQL Server 2016 Microsoft добавила несколько полезных функций JSON. Таким образом, это может быть достигнуто очень легко:
DECLARE @Variable nvarchar(max) = 'John;Steven;Brian;Mike';
SELECT [value] as Name, 1 as AccountType FROM STRING_SPLIT(@Variable,';')
FOR JSON PATH
Подробнее об этих функциях здесь — https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15