场景描述
有一个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的记录确实包含了“阿斯蒂芬”这个名字
文章展示了如何在SQL中使用OPENJSON函数从School表的person字段,存储的JSON数据中提取并查询包含特定名字(如阿斯蒂芬)的记录。示例查询不仅精确匹配,还支持模糊匹配。并通过验证ID为7933680107196682的记录来证实查询结果的准确性。
698

被折叠的 条评论
为什么被折叠?



