Jay*_*ank 6 t-sql json sql-server-2016
我怎样才能在该字段名称读取JSON文件值包含使用空间OPENJSON在SQL服务器2016。请参阅以下代码:
DECLARE @json NVARCHAR(MAX)
SET @json = N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60) '$.full name')
Run Code Online (Sandbox Code Playgroud)
该空间中的另一个示例代码位于字段名称之后。
SET @json = N'{ "name " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60) '$.name')
Run Code Online (Sandbox Code Playgroud)
'$.name' 将返回空值。有没有办法读取这个值?
tuk*_*kan 10
通常,在属性名称中使用空格是一个坏主意。
我会[ ]从您的 OPENJSON 名称和 varchar(60) - 源 MSDN OPENJSON 中删除。
现在来实际回答你的问题:
您需要在WITH子句中用双引号格式化您的属性:
@DECLARE @json NVARCHAR(MAX);
SET @json=N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH (name varchar(60) '$."full name"')
Run Code Online (Sandbox Code Playgroud)
对于第二个:
SET @json = N'{ "name " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( name varchar(60)'$."name "')
Run Code Online (Sandbox Code Playgroud)