Текст JSON неправильно отформатирован.Неожиданный символ 'N' найден в позиции 0 - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в JSON в SQL.Я получаю сообщение об ошибке «Текст JSON неправильно отформатирован. В позиции 0 обнаружен неожиданный символ« N »».при выполнении ниже -

DECLARE @json1 NVARCHAR(4000)
set @json1 = N'{"name":[{"FirstName":"John","LastName":"Doe"}], "age":31, "city":"New York"}'
DECLARE @v NVARCHAR(4000)
set @v = CONCAT('N''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')
--select @v as 'v'
SELECT  JSON_VALUE(@v,'$.FirstName')

"select @v as 'v'" дает мне

N'{"FirstName":"John","LastName":"Doe"}'

Но использование его в последнем операторе select вызывает ошибку.

DECLARE @v1 NVARCHAR(4000)
set @v1 = N'{"FirstName":"John","LastName":"Doe"}'
SELECT  JSON_VALUE(@v1,'$.FirstName') as 'FirstName'

тоже отлично работает.

1 Ответ

0 голосов
/ 12 октября 2018

Вы добавляете символ N в свой оператор CONCAT.

Попробуйте изменить строку:

set @v = CONCAT('N''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')

на:

set @v = CONCAT('''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')
...