利用 row_number 进行对传入SQL语句进行分页
来源:互联网 发布:股票指标源码 编辑:程序博客网 时间:2024/04/29 07:24
注意:
1. 传入的sql语句, 必须带order by
2. 以前见过带Group by 的sql , 直接用有问题, 修改后还是可以用, 但一时记不清情形了, 哪位看官有兴趣请指出, 大家共同切磋!
-- 创建测试表CREATE TABLE TestTable([Id] UNIQUEIDENTIFIER PRIMARY KEY,[Name] VARCHAR(30))GO-- 加上9条测试数据DELETE FROM TestTableDECLARE @rowIdx INTSET @rowIdx = 1WHILE (@rowIdx <= 9)BEGIN INSERT INTO TestTable ( Id, [NAME] ) VALUES ( NEWID(), '名字' + CONVERT(VARCHAR(2), @rowIdx) ) SET @rowIdx = @rowIdx + 1END
ALTER PROC PaginationForSQL@sql VARCHAR(MAX),@pageIndex INT,@pageSize INT AS BEGIN DECLARE @newSql VARCHAR(MAX) DECLARE @orderBy VARCHAR(100) DECLARE @orderByIndex INT --取得最后一个order by 的位置 SET @orderByIndex = 0 DECLARE @tempindex INT WHILE (1 = 1) BEGIN SET @tempindex = CHARINDEX('order', @sql, @orderByIndex + 1) IF (@tempindex = 0) BREAK SET @orderByIndex = @tempindex END SET @orderBy = SUBSTRING(@sql, @orderByIndex, LEN(@sql) -@orderByIndex + 1) SET @sql = SUBSTRING(@sql, 0, LEN(@sql) -LEN(@orderBy)) --得到总记录数 SET @newSql = 'SELECT count(1) as Total FROM (' + @sql + ') AS t_outer ' PRINT @newSql EXEC (@newSql) --得到查询结果 SET @newSql = 'SELECT * FROM ( SELECT ROW_NUMBER() OVER(' + @orderBy + ') AS RowNum,* FROM (' + @sql + ') AS t_inner ) AS t_outer WHERE RowNum > ' + CONVERT(VARCHAR(10), (@pageIndex -1) * @pageSize) + ' AND RowNum <= ' + CONVERT(VARCHAR(10), @pageIndex * @pageSize) PRINT @newSql EXEC (@newSql)ENDGOEXEC dbo.PaginationForSQL 'select * from TestTable order by name',2,4
- 利用 row_number 进行对传入SQL语句进行分页
- 使用 row_number 对sql server 进行 分页
- 对结果集进行分页SQL语句
- 利用sql对数据库进行分页
- 利用sql对数据库进行分页
- 利用sql语句对数据库进行操作
- 利用SQL语句进行高效果分页(有疑问)
- 几种数据库利用SQL语句进行分页
- 对传入where条件的sql语句进行参数化处理
- SQL 2005 ROW_NUMBER() 语句分页
- sql中利用row_number() 分页
- 利用JScript对长篇文章进行分页
- Oracle、SQL Server、Access利用SQL语句进行高效果分页
- Oracle、SQL Server、Access利用SQL语句进行高效果分页
- 使用SQL语句来进行分页处理
- 三种数据库利用SQL语句进行高效果分页
- 三种数据库利用SQL语句进行高效果分页
- 使用SQL语句进行数据比对
- C++内存管理
- POJ 1459 Power Network 最大流
- 李彦宏:外面的世界很大眼界决定命运
- 高级Bootkit:Tophet.a
- VLOOKUP使用方法
- 利用 row_number 进行对传入SQL语句进行分页
- javascript 实现复制功能,选择页面内容
- 用protobuf定义消息及处理
- hdu 4339 Query
- android系统按键驱动篇
- java中jcom操作excel
- js页面间参数传递
- jbpm4.3之后增加了对BPMN的支持
- 使用 /clr 编译 MFC 可执行文件或规则 DLL