我正在尝试使用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"}
它有效,没有问题......但它拒绝在一个记录中检查该集合,并在搜索记录时检查该特定字段的值。我如何格式化搜索?有可能吗?
答案 0 :(得分:0)
您需要一个子查询来访问列中的元素:
SELECT *
FROM Students
WHERE EXISTS (
SELECT 1
FROM OPENJSON(CommunicatorsJson)
WITH (UserName VARCHAR(200) '$.UserName')
WHERE UserName = 'SkypeUser'
)