如何从sql server中的表中查询json数组类型列的值?

Posted

技术标签:

【中文标题】如何从sql server中的表中查询json数组类型列的值?【英文标题】:How to query a value from json array type column from a table in sql server? 【发布时间】:2018-10-04 07:44:44 【问题描述】:

我有一个包含单行数据的表,其中包含一个 nvarchar(MAX) 类型的列,我们将该列命名为 json_column,该列的值如下所示:


"data": [
    
        "name": "john",
        "num": "123"
    ,
    
        "name": "peter",
        "num": "345"
    ,
    
        "name": "donald",
        "num": "789"
    ,
 ]

现在我如何获取 num 的值,其中 name 作为输入传递给 where 子句或查询?

我的查询应该只返回 num 的值。

例如:假设我需要名称为 'john' 的 num 的值,并且查询应返回 123。

【问题讨论】:

【参考方案1】:

刚刚找到答案,查询可以写成如下:

SELECT OPENJSON((SELECT json_column From json_column_table),'$.data')
WITH 
(
 name nvarchar(100) '$.name',
 num  nvarchar(100) '$.num'
)
WHERE name='john';

【讨论】:

以上是关于如何从sql server中的表中查询json数组类型列的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中的查询创建的表中添加一行?

如何从 SQL Server 中特定数据库的表中获取所有列名?

如何从 SQL Server 中的表中删除重复行 [重复]

如何从 SQL Server 中的表中获取不匹配的数据

如何从 SQL Server 中的表中获取行的索引?

从 SQL Server 中的两个表中删除