场景描述
有一个School表,里面有一个字段:person nvarchar(max),该字段保存如下类型的json数据,现在需要查询出包含"阿斯蒂芬"的记录。
[
{
"Id": 7933680100970752,
"Name": "阿斯蒂芬"
},
{
"Id": 7933680101232896,
"Name": "阿斯蒂芬2"
}
]
SQL示例
SELECT
School.Id,
JSON_VALUE(PersonInfo.value,'$.Name') AS PersonName
FROM School CROSS APPLY OPENJSON (School.person) AS PersonInfo
WHERE JSON_VALUE(PersonInfo.value,'$.Name') = '阿斯蒂芬'
--同样支持模糊查询
--AND JSON_VALUE(PersonInfo.value,'$.Name') like '阿%'
查询结果
选一个id确认一下上面的结果是否正确:
select Id,person
from School
WHERE id = 7933680107196682
查询结果
可以看到id为7933680107196682的记录确实包含了“阿斯蒂芬”这个名字