场景描述

有一个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的记录确实包含了“阿斯蒂芬”这个名字

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐