MS SQL查询包含JSON的字段

彼得·库策(Pieter Coetzer)

我在表格的SQL字段中具有以下JSON:

{
   "type": "info",
   "date": "2019/11/12 14:28:51",
    "state": {
        "6ee8587f-3b8c-4e5c-89a9-9f04752607f0": {
            "state": "open",
            "color": "#0000ff"
        }
    },
...
}

我使用以下查询在MS SQL中:

SELECT 
     JSON_VALUE(json_data, '$.type') AS msg_type
    ,JSON_VALUE(json_data, '$."date"') AS event_date
    ,JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".state') AS json_state
    ,JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".color') AS json_color
FROM 
[dbo].[tbl_json_dump]

要获取日期(保留字),我必须将字段名称输入为$。“ date”

我似乎无法获取状态或颜色字段的数据,我认为它与嵌套在“ 6ee8587f-3b8c-4e5c-89a9-9f04752607f0”下有关,因为当我查询时:

JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0"') AS json_state

我把东西拿回来-

{"state":"open","color":"#0000ff"}

但是使用

JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".state') AS json_state

它不起作用

关于我在做什么错的任何建议吗?

萨尔曼A

只需替换为即可JSON_QUERYJSON_VALUE因为您有兴趣获取价值。


JSON_QUERY 应该返回一个JSON片段,并设计用于对象和数组,而不是值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

包含“ AND”和“ OR”的MS SQL中断查询

来自分类Dev

MS SQL Server查询后返回JSON

来自分类Dev

MS SQL Server查询后返回JSON

来自分类Dev

动态MS SQL查询

来自分类Dev

通过SQL查询计算MS Access中的空白字段

来自分类Dev

MS访问:当字段可能包含00:00:00时,查询的最大值(日期/时间字段)

来自分类Dev

MS Access SQL插入查询

来自分类Dev

优化MS-SQL查询

来自分类Dev

MS SQL查询打卡时间

来自分类Dev

MS访问查询生成字段,其中包含没有表的自定义数据

来自分类Dev

MS Access 查询备注字段被截断

来自分类Dev

SQL查询调整-MS SQL Server -2012

来自分类Dev

MS Access 字段拆分

来自分类Dev

MS Access查询语法

来自分类Dev

MS访问查询聚合

来自分类Dev

MS Access:查询

来自分类Dev

MS访问查询列表

来自分类Dev

更新 MS Access 查询?

来自分类Dev

ms access - 查询空行

来自分类Dev

如何处理实体框架/MS-SQL 中包含查询的性能下降?

来自分类Dev

我们如何在 SQL 查询 MS Access 2007 的字段上定义验证规则

来自分类Dev

用MS子连接MS SQL Server

来自分类Dev

使用 MS PowerShell ISE 查询 json 数据

来自分类Dev

将SQl查询转换为MS Access

来自分类Dev

从Linux终端执行MS SQL Server查询

来自分类Dev

MS Access SQL查询IP地址范围

来自分类Dev

MS ACCESS SQL查询计数不同

来自分类Dev

取消嵌套的MS Access SQL查询嵌套

来自分类Dev

将mysql查询转换为MS SQL