由于生产环境的需要在数据库中对比两个JSON的内容是否一样,由于Key存在位置不相符的情况无法通过简单的等于进行判断。为此采用SQLServer CLR功能,引入Newtonsoft.Json的方法进行对比,得到想要的结果。示例如下:
select dbo.IsSameJson('{"ColA":"Value1", "ColB":"Value2"}', '{"ColB":"Value2", "ColA":"Value1"}')
--结果:1
select dbo.IsSameJson('{"ColA":"Value1", "ColB":""}', '{"ColB":"Value2", "ColA":"Value1"}')
--结果:0
附件中提供了创建CLR函数的相关脚本及c#源代码,有c#基础的同学可以自行完善修改,补充更多的JSON功能,没有基础想使用该函数的同学可以直接执行相关脚本获取该函数。
1