0

这种语法在 SQL 中是否可行:

     SELECT * 
     FROM OPENJSON(SELECT * FROM FoodSara_tbl FOR JSON AUTO)

如果是,你能解释一下如何以及为什么?

如果不是,为什么?而不是那种野兽的方式是什么?

4

1 回答 1

0

此查询正确!

SELECT * 
FROM OPENJSON(CONVERT(NVARCHAR(MAX),(SELECT * FROM [dbo].[temp1] FOR JSON AUTO)))

OPENJSON 命令给出一个包含 json 数据作为参数的字符串,但是当你从表中生成 json 时,你有一个纯 json 作为结果集,而 OPENJSON 给出了一个字符串参数作为 json。

两者不同

如果您运行此代码

SELECT * FROM [dbo].[temp1] FOR JSON AUTO

你看到这个结果

[{"Pname":"Ava","Pregion":"German","Pcount":10},{"Pname":"Ava","Pregion":"UK","Pcount":5}]

如果将此结果放在 OPENJSON 上

SELECT * 
FROM OPENJSON([{"Pname":"Ava","Pregion":"German","Pcount":10},{"Pname":"Ava","Pregion":"UK","Pcount":5}])

见下面的错误

Invalid column name '{"Pname":"Ava","Pregion":"German","Pcount":10},{"Pname":"Ava","Pregion":"UK","Pcount":5}'.

但是如果你 '在你的 json. 它的解析正确

'是 SQL Server 中字符串的符号

于 2021-01-10T06:08:53.237 回答