gpt4 book ai didi

json - T-SQL OPENJSON WITH 子句

转载 作者:行者123 更新时间:2023-12-02 18:19:06 25 4
gpt4 key购买 nike

这个问题是基于来自 JSON data in SQL Server 的信息在线文档中的文章:

DECLARE @json NVARCHAR(MAX);
SET @json = N'[
{"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
{"id": 5, "info": {"name": "Jane", "surname": "Smith"}, "dob": "2005-11-04T12:00:00"}
]';

SELECT *
FROM OPENJSON(@json)
WITH (
id INT 'strict $.id',
firstName NVARCHAR(50) '$.info.name',
lastName NVARCHAR(50) '$.info.surname',
age INT,
dateOfBirth DATETIME2 '$.dob'
);

WITH 子句中包含的每一行似乎由以下内容组成:

  • 别名,例如 firstName
  • 数据类型,例如 NVARCHAR(50)
  • JSON 列名称,例如 '$.info.name'

有没有一种方法可以将 JSON 字符串解析为列,而无需显式定义每一列?

换句话说,JSON 字符串包含列名,出于我的目的,别名可以与 JSON 字符串列名具有相同的名称。

最佳答案

Is there a way to parse the JSON string into columns without having to explicitly define each column?

简而言之,没有。 SQL 语言有非常严格的规则,要求您在查询编译时查看任何数据之前了解输出中的列。

如果你想让它动态地构建列,你需要动态 SQL,这意味着运行一个查询来了解你的列,使用结果动态地构建一个新的 SQL 命令,然后运行新的 SQL 命令SQL。

关于json - T-SQL OPENJSON WITH 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71105243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com