JSON_VALUE无法获取筛选结果

时间:2017-05-21 06:21:33

标签: sql-server json

我正在尝试使用MS SQL 2016的一个功能 - JSON_VALUE为我工作......

我有一个JSON格式的对象集合,存储在每个记录的DB的一个字段中。

以下是一个例子:

[{"CommunicatorType":0,"UserName":"SkypeUser"},{"CommunicatorType":1,"UserName":"FaceUser"}]

我要做的是在该列中执行包含该信息的搜索:

"SELECT * from Students WHERE JSON_VALUE(CommunicatorsJson, '$.UserName') LIKE 'SkypeUser'"

零结果......

如果我只使用一个对象作为JSON:

{"CommunicatorType":0,"UserName":"SkypeUser"}

它有效,没有问题......但它拒绝在一个记录中检查该集合,并在搜索记录时检查该特定字段的值。我如何格式化搜索?有可能吗?

1 个答案:

答案 0 :(得分:0)

您需要一个子查询来访问列中的元素:

SELECT * 
FROM Students 
WHERE EXISTS (
    SELECT 1 
    FROM OPENJSON(CommunicatorsJson)
    WITH (UserName VARCHAR(200) '$.UserName')
    WHERE UserName = 'SkypeUser'
)