1.引言

今天在工作中遇到一个需要进行sql server分页数据查询的问题,但是分页数据查询的sql却忘记了,最终通过查询资料解决了该问题。现在把解决方法记下,以备查阅。

在这里需要感谢博客园Qlin

2.数据分页语句

假设需要查询表为Test,Test表中有个字段为ID(我这里用的是int型),当前页pageIndex=5,页大小pageSize=10。则分页查询语句如下:

SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY ID) AS ROWID,* FROM Test
) AS T WHERE T.ROWID BETWEEN (pageIndex-1) * pageSize+1 and pageIndex * pageSize;

3. C#实现

       /// <summary>
/// 获取分页数据列表
/// </summary>
/// <param name="strFieldList">查询字段</param>
/// <param name="strWhere">查询条件</param>
/// <param name="strOrderBy">排序字段</param>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">页大小</param>
/// <returns></returns>
public DataSet GetListByPage(string strFieldList, string strWhere, string strOrderBy, int pageIndex, int pageSize)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select");
if (string.IsNullOrEmpty(strFieldList)) //去除null
{
strFieldList = strFieldList.Trim();
if (string.IsNullOrEmpty(strFieldList)) // 去除只有空格的字符串
{
strFieldList = " * ";
}
}
strSql.Append(" " + strFieldList + " ");
strSql.Append(" from (select row_number() over (order by id) as rowid,");
strSql.Append(strFieldList + "from Test"); if (!string.IsNullOrEmpty(strWhere)) //去除null
{
strWhere = strWhere.Trim().ToLower();
if (!string.IsNullOrEmpty(strWhere)) // 去除只有空格的字符串
{
strWhere = (strWhere.StartsWith("where")) ? " " + strWhere : " where " + strWhere;
strSql.Append(strWhere);
}
}
strSql.Append(") as t ");
if (!string.IsNullOrEmpty(strWhere)) // 没有查询条件
{
strWhere += " and t.rowId between {0} and {1}";
}
else
{
strWhere = "where t.rowId between {0} and {1}";
}
strWhere = string.Format(strWhere, (pageIndex - ) * pageSize + , pageIndex * pageSize);
strSql.Append(strWhere); if (!string.IsNullOrEmpty(strOrderBy)) //去除null
{
strOrderBy = strOrderBy.Trim().ToLower();
if (!string.IsNullOrEmpty(strOrderBy)) // 去除只有空格的字符串
{
strOrderBy = (strOrderBy.StartsWith("order by")) ? " " + strOrderBy : " order by " + strOrderBy;
strSql.Append(strOrderBy);
}
} return DbHelperSQL.Query(strSql.ToString());
}

4. 原文

Sql Server 数据分页

sql server中的分页数据查询的更多相关文章

  1. SQL Server中Table字典数据的查询SQL示例代码

    SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...

  2. .SQL Server中 image类型数据的比较

    原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...

  3. sql Server中临时表与数据表的区别

    sql server 中临时表与数据表的区别 1.如何判断临时表和数据表已生成 --如何判断临时表是否已创建--- if exists(select * from tempdb..sysobjects ...

  4. 通过DBCC Page查看在SQL Server中哪行数据被锁住了?

    原文:通过DBCC Page查看在SQL Server中哪行数据被锁住了? 如何查看被锁的是哪行数据?通过dbcc page可以. 要想明白这个问题: 首先,需要模拟阻塞问题,这里直接模拟了阻塞问题的 ...

  5. 删除sql server中重复的数据

    原文:删除sql server中重复的数据 with list_numbers as( select Name, AuthorOrTime, Url, Price, EstimatePrice, Si ...

  6. 转:Sql Server中清空所有数据表中的记录

    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍.   使用sql删除数据库中所有表是不难的 ...

  7. Sql Server中清空所有数据表中的记录

    Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 代码如下:exec sp_msforeachtable  @Command1 ='truncate table ?'删除所有数据 ...

  8. 多个程序对sql server中的表进行查询和插入操作导致死锁

    最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...

  9. 从TXT文本文档向Sql Server中批量导入数据

    下面我们通过以下的简单的SQL语句即可实现数据的批量导入,代码如下: Bulk insert id From 'G:\文档\test.txt' With ( fieldterminator=',', ...

随机推荐

  1. 側滑回退的layout(相似IOS側滑回退到上一个activity)

    用过apple的同学应该都知道,大多数IOS应用都支持側滑回退,就不具体说明了,直接上图: 作为使用ios的android开发人员来说,我是特别喜欢这个功能的.既然这样,那就在android上也实现这 ...

  2. poj 3168 Barn Expansion 几何yy

    题链:http://poj.org/problem? id=3168 Barn Expansion Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  3. 最全Pycharm教程(28)——Pycharm搜索导航之搜索应用实例

    1.主题 这里我们将介绍Pycharm另外一项强力的搜索导航功能.如果你希望知道某个特定的类或方法都在project中的哪些地方发挥了作用.也就是找出其全部的usages,这将是一个很巨大而繁琐的pr ...

  4. 重要经验五:block作为属性的注意事项

    现代ios应用的开发.不使用GCD和block,效率会减少非常多,在今年3月份之前,我在block的学习和使用方面,精力和经验都明显不足,在SF有个牛逼同事.不仅自己积累了一套库,并且对这个库持续进行 ...

  5. com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user

    1.错误描写叙述 553 Mail from must equal authorized user com.sun.mail.smtp.SMTPSendFailedException: 553 Mai ...

  6. .NET作品集:linux下的.net mvc cms

    cms程序架构 本程序是主要是用于企业网站开发的,也可以做博客程序,程序是从之前上一篇的.net 博客程序改进过来的,主要技术由webform转成.net mvc了,由于是很早之前的项目,12年还是m ...

  7. Can't update: no tracked branch No tracked branch configured for branch dev.

    1.git pull 命令出现以下错误 $ git pull There is no tracking information for the current branch. Please speci ...

  8. Python 项目实践一(外星人入侵小游戏)第五篇

    接着上节的继续学习,在本章中,我们将结束游戏<外星人入侵>的开发.我们将添加一个Play按钮,用于根据需要启动游戏以及在游戏结束后重启游戏.我们还将修改这个游戏,使其在玩家的等级提高时加快 ...

  9. 2.python数据类型

    1 Number(数字) 2   字符串类型(string)   字符串内置方法 # string.capitalize() 把字符串的第一个字符大写 # string.center(width) 返 ...

  10. Hibernate--使用注解配置映射关系

    写在前面: 配置实体类与数据库的映射关系,有两种方式: 1.使用*.hbm.xml    :  2.使用@注解 一:注解的方式: 1.@Entity 加在类的前面,将类声明为持久化类. 2.@Tabl ...