我是新的JSON在SQL.我得到错误“JSON文本格式不正确.意外字符'N'是发现在位置0.”而执行下面-
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作为'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'
型
也可以正常工作。
3条答案
按热度按时间w8biq8rn1#
如果您使用的是SQL Server 2016或更高版本,则内置函数
ISJSON
可验证列中的字符串是否为有效的json。因此,你可以这样做:
字符串
ru9i0ody2#
在
CONCAT
语句中添加N
字符。试着换一条线:
字符串
收件人:
型
7vhp5slm3#
在应用where子句之前,JSON_VALUE函数可能会首先在所有行上执行。这将取决于执行计划,这意味着像top x子句或order by这样的小事情可能会对它产生影响。