【问题标题】:use Json auto into open Json in SQL在 SQL 中使用 Json auto 进入打开的 Json
【发布时间】:2021-01-10 05:50:34
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我认为双括号应该可以工作 ( ( SELECT... 虽然我不知道你为什么会这样做。
  • 你想用这个语句达到什么目的?
  • 我想将我的 Json 表打开到原来的表中!
  • @SaraMoradi 然后你需要使用带有显式模式的OPENJSONWITH 子句)。
  • 是的,我在原始代码中使用了它,但我不想提及

标签: sql json sql-server open-json


【解决方案1】:

这个查询正确!!!

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 中字符串的符号

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多