首页 > 解决方案 > SQL Where 列包含 Json 数组

问题描述

我正在尝试查询包含 json 对象数组的列。

对象数组如下所示:

[
{
    "TYPE": "car",
    "NAME": "lucy"
},
{
    "TYPE": "bus",
    "NAME": "bob"
},
{
    "TYPE": "car",
    "NAME": "mary"
}
]

我正在尝试选择该列是否包含 type = "car" 和 name = "lucy" 的对象

标签: sqlsql-server

解决方案


您可以使用OPENJSON将数组拆分为单独的行:

SELECT j.*
FROM YourTable t
CROSS APPLY OPENJSON(t.) WITH (
    [TYPE] varchar(50),
    [NAME] varchar(50)
) j
WHERE j.[TYPE] = 'car' AND j.[NAME] = 'lucy'

或者,如果您只想基于此过滤主表,请将其放在WHERE

SELECT t.*
FROM YourTable t
WHERE EXISTS (SELECT 1
    FROM OPENJSON(t.) WITH (
        [TYPE] varchar(50),
        [NAME] varchar(50)
    ) j
    WHERE j.[TYPE] = 'car' AND j.[NAME] = 'lucy'
);

推荐阅读