我是 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')

“ 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楼 票数:3 已采纳

您正在CONCAT语句中添加N字符。

尝试更改行:

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

到:

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

#2楼 票数:0

在我的情况下,在 json 更正 sql server 在 OPENJSON 函数中运行良好后,JSON 字符串中存在一些不合适的字符

  ask by user9057272 translate from so

未解决问题?本站智能推荐:

1回复

带有转义字符的JSON查询返回结果

从以下查询中,我得到的结果为: 查询如下重现此结果的查询,我简化了查询使用的实际查询,但基于选择是: 预期结果 : 如何实现?
1回复

从表列名和数据创建json键值

是否可以从表SELECT语句创建 JSON 键值,其中列名作为键,列值作为值 返回如下内容 我看过选择为 JSON 但卡在这里
1回复

在SQL 2016中将值追加到JSON对象/修改JSON对象(SQL Server JSON数据)

我在SQL2016数据库中有一个JSON列,我想向JSON对象的根添加一个键-值对。 JSON列的内容应更改为 {"Info1":"Value1"} 至 {"Info1":"Value1", "Info2":"Value2"}
3回复

Sql Server 2016中关于json数据的Where子句

我的表中有一个nvarchar(1000)字段,我在该列中存储JSON数据。 例如: 从这个如何在sql server中使用JSON_QUERY获取所有具有查询ID 1的CONTENT_RULE_ID
1回复

SQL Server:使用JSON输入使用联接条件更新表

我有一个表,其中包含position_id和column_id列。 我正在从API调用中获取JSON响应,并且我想使用position_id使用JSON响应中的值更新表。 这是一个例子 JSON表: 数据库中的表(我称之为#updateTable ): 我想
1回复

试图弄清楚如何使用 JSON 路径表达式制作子数组

如何使需要指导EmailId的子阵列EventId使用下面的架构JSON路径表达式: http://sqlfiddle.com/#!6/8f8ecc/2
1回复

分别为每个记录获取 SQL 服务器记录详细信息作为 JSON

我有2张桌子。 部门及员工如下: 我需要每个部门的 JSON 详细信息,如下所示: 我尝试了以下查询,该查询将整个表数据作为一个 JSON 返回。 我收到如下回复:
1回复

SQL - Json 查询

我有类似于下面的表格,其中有一对多的映射 我期待编写查询,因此它生成如下格式的 json,其中包含项目和子数组 我在下面尝试过但无法达到预期的输出 有没有办法查询以产生预期的 Json