前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server 分页+json分享

SQL Server 分页+json分享

作者头像
李明成
发布2020-07-03 16:29:15
1.4K0
发布2020-07-03 16:29:15
举报
文章被收录于专栏:dotNET知音dotNET知音

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)的用户数据语句如下
代码语言:javascript
复制
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
代码语言:javascript
复制
[{
	"Code": "UserName",
	"ShowLable": "用户名",
	"ShowText": ".NET",
	"IsShow": 1,
	"ShowSort": 1
}, {
	"Code": "RealName",
	"ShowLable": "真实名称",
	"ShowText": "知音",
	"IsShow": 1,
	"ShowSort": 2
}]
  • 验证是否是json
代码语言:javascript
复制
SELECT Id,QueryJson  FROM AA_QueryJson where ISJSON(QueryJson)>0

返回:

  • 检索json
代码语言:javascript
复制
  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
代码语言:javascript
复制
select JSON_MODIFY(QueryJson,'$[0].ShowText', 'dotNET')    from [AA_QueryJson];

返回:

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

参考:

https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ms188385(v=sql.110)?redirectedfrom=MSDN

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-functions-transact-sql?view=sql-server-ver15

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 dotNET知音 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档