3

我是 SQL 中 JSON 的新手。我收到错误消息“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')

“选择@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'

也可以正常工作。

4

1 回答 1

4

您正在声明中添加N角色CONCAT

尝试换行:

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

至:

set @v = CONCAT('''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')
于 2018-10-12T15:51:27.463 回答