【问题标题】:SQL Server extract first array element from JSONSQL Server 从 JSON 中提取第一个数组元素
【发布时间】:2023-04-08 16:13:01
【问题描述】:

我将 json 存储在 SQL Server 的一列中,我需要对其进行修改以从中删除方括号。格式如下。似乎找不到一个好的方法。

[ { "Message":"Info: this is some message here.", "Active":true } ]

一种方法是使用下面的查询来完成,但是这个查询非常慢,我需要在非常大的数据集上运行。

select a.value
from dbo.testjson e
cross apply OPENJSON(e.jsontext) as a
where isjson(e.jsontext) = 1

我能想到的唯一其他方法就是进行字符串操作,但这很容易出错。有人可以帮忙吗?

【问题讨论】:

    标签: sql-server-2016


    【解决方案1】:

    好的,想通了。发布答案以防将来有人需要它。

    select 
        json_query('[{"Message":"Info: this is some message here.","Active":true}]', '$[0]')
    

    这将返回内部消息。

    【讨论】:

    • 在找到这个 gem '$[0]' 来处理 JSON 数组的第一个元素之前,我一直在寻找。
    【解决方案2】:

    您应该添加属性名称,在本例中为 Message,以便仅获取该部分。请记住,它区分大小写。类似的东西;

     select json_value('[{"Message":"Info: this is some message here.","Active":true}]', '$[0].Message')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多