我有一个JSON字符串,如下所示:

[
    {
        "id": 103001058774,
        "name": "status",
        "label": "Status",
        "description": "Ticket status",
        "choices": {
            "2": [
                "Open",
                "Open"
            ],
            "3": [
                "Pending",
                "Pending"
            ],
            "4": [
                "Resolved",
                "Resolved"
            ],
            "5": [
                "Closed",
                "Closed"
            ],
            "6": [
                "Waiting on Customer",
                "Awaiting your Reply"
            ],
            "7": [
                "Waiting on Third Party",
                "Being Processed"
            ],
            "8": [
                "Assigned",
                "Assigned"
            ]
        }
    }
]

我正在try 将其放入JSON的CHOICES部分中的如下所示的SQL表中:

id agent_label customer_label
2 Open Open
3 Pending Pending
4 Resolved Resolved
5 Closed Closed
6 Waiting on Customer Awaiting your Reply
7 Waiting on Third Party Being Processed
8 Assigned Assigned

我已经有了这个问题,我是在正确的线上…但我不知道怎么go 掉身份证号码!:

DECLARE @jsonStatusesData NVARCHAR (MAX) = *'My JSON String'*

SELECT id = JSON_QUERY(j.value, $.choices')
FROM OPENJSON(@jsonStatusesData) AS j

我确实还有几行代码需要添加,但最终上面的表格才是我想要做的.当然,该SQL查询只是返回整个Choices分支,对我没有任何帮助.

任何帮助都是最好的!:)

谢谢,

灰烬

推荐答案

你需要OPENJSON的第二个关口才能突破choicesarray.并且您需要使用AS JSON语法读取该数组

SELECT
  j1.id,
  j2.[key],
  agent_label = JSON_VALUE(j2.value, '$[0]'),
  customer_label = JSON_VALUE(j2.value, '$[1]')
FROM OPENJSON(@jsonStatusesData)
  WITH (
    id bigint,
    choices nvarchar(max) AS JSON
  ) j1
CROSS APPLY OPENJSON(j1.choices) j2;

db<>fiddle

Sql相关问答推荐

Oracle中的分层查询

SQL查询以条件空值跟踪生产操作结果进展

如何使用PostGIS从单个表中 Select 所有相交面组

用于动态查询情况的存储过程常识模式

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

Postgres:对包含数字的字符串列表进行排序

SQL基于多个值 Select 单行

如何更新SQLite数据库中的表?

OVER子句WITH PARTITION BY和ORDER BY忽略主查询的WHERE子句

在SQL查询中使用COALESS

将计算列设置为持久化的目的是什么?

属于(日期)范围类型及其交集的总权重​

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

如何用HeidiSQL在Firebird中设置超时?

SQL JSON_QUERY 使用列中的值构造 json 路径并接收错误

Spark / Hive:如何获取列中正值的百分比?

Clickhouse:左连接表到外部数组

使用 regexp_replace 替换所有出现的特殊字符

运算符不存在:integer = bigint[]

在 PostgreSQL 中,如何将数组中的每个元素用作另一个表中的键?