资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么用json实现SQLServer分页

这篇文章主要介绍“怎么用json实现SQL Server分页”,在日常操作中,相信很多人在怎么用json实现SQL Server分页问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用json实现SQL Server分页”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司是一家专业提供柳南企业网站建设,专注与成都网站设计、做网站、成都外贸网站建设公司成都h5网站建设、小程序制作等业务。10年已为柳南众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

1。SQL Server 版本2012+ 新增SQL分页的写法

最近封装一个轻量级的ORM用到了分页,以前只知道使用Row_Number函数,现在发现sqlserver 新增的 {orderBy} offset {start} rows fetch next {pageSize} rows only 也挺好用的。

简单回顾下 sqlserver 各个版本支持分页的方式。

  • SQL Server 2005 支持 top not in 写法

  • SQL Server 2008 支持 Row_Number()写法

  • SQL Server 2012 支持 OFFSET、FETCH NEXT 写法

这也就是为什么Efcore连接SQL Server 2012之前的版本进行分页操作会报异常“SqlException: 'OFFSET' 附近有语法错误。在 FETCH 语句中选项 NEXT 的用法无效。”的原因。

如果要使用2008进行分页需要特殊的配置options.UseRowNumberForPaging();

  •  OFFSET、FETCH NEXT 写法 取出页码(2)和一页显示的条数(20)的用户数据语句如下

select * from Sys_UserInfo Order by SysNo  asc offset 20 rows fetch next 20 rows only;

offset 开始的行或者跳过的行 fetch next 取出排序后的多少行,是不是比之前的写法方便多了。

2。SQL Server 版本2016+ 新增JSON功能

最近有个需求,用到存储json的又不想使用其他文档数据库,刚好发现SQL Server新增了json功能。来看下简单的验证、检索、编辑功能。

  •  定义json

[{
"Code": "UserName",
"ShowLable": "用户名",
"ShowText": ".NET",
"IsShow": 1,
"ShowSort": 1
}, {
"Code": "RealName",
"ShowLable": "真实名称",
"ShowText": "知音",
"IsShow": 1,
"ShowSort": 2
}]
  • 验证是否是json

SELECT Id,QueryJson  FROM AA_QueryJson where ISJSON(QueryJson)>0

返回:

怎么用json实现SQL Server分页

  • 检索json

  SELECT TOP (1000) [Id]
     ,JSON_VALUE(QueryJson,'$[0].ShowLable') as ShowLable
 ,JSON_VALUE(QueryJson,'$[0].ShowText') as ShowText
 FROM [AaCenter].[dbo].[AA_QueryJson]  where ISJSON(QueryJson)>0

返回:

怎么用json实现SQL Server分页

  • 修改json

select JSON_MODIFY(QueryJson,'$[0].ShowText', 'dotNET')    from [AA_QueryJson];

返回:

怎么用json实现SQL Server分页

当然有很多高级的功能如OPENJSON 行集函数可将 JSON 文本转换为一组行和列、嵌套操作等等。

到此,关于“怎么用json实现SQL Server分页”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


网站标题:怎么用json实现SQLServer分页
标题来源:http://cdkjz.cn/article/pghpcg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220