sqlserver通用穩定的拼接SQL分頁語句方案

2021-09-26 03:34:46 字數 845 閱讀 4259

經常接觸到的mysql,拼接sql分頁語句直接在sql尾部加上limit x,x,既不汙染原sql,又夠方便整潔。

最近做多資料來源動態查詢,需要支援多種資料庫,分頁問題隨之而來,像mysql、oracle這些拼串方式不再贅述。

高版本的sqlserver(2012)其實也支援如mysql中limit這種分頁方式。

select * from student

order by sno

offset ((@pageindex-1)*@pagesize) rows

fetch next @pagesize rows only;

如果確認sqlserver高於2012,可以使用這種方式進行分頁。

如果低於這個版本,或相容老版本,考慮利用row_number

考慮相容性、通用性,在踏過坑後,下面sql替換方案為最終版本。

將sql替換下列 原sql的位置 ,pageindex :當前頁的位置 pagesize:一頁幾條資料。

select

from

select

row number() over ( order by tempcolumn) temprownumber, *from

( select top "+ ((pageindex - 1) * pagesize + pagesize) +" tempcolumn = 0,* from (

"+ 原sql的位置 +"

) t) tt

) ttt

where

temprownumber > "+ (pageindex - 1) * pagesize

通用分頁儲存過程 sqlserver

獲取指定頁的資料 create procedure sppagination tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...

sqlserver 通用分頁儲存過程

示例一create procedure commonpagination columns varchar 500 要顯示的列名,用逗號隔開 tablename varchar 100 要查詢的表名 ordercolumnname varchar 100 排序的列名 order varchar 50 ...

通用分頁儲存過程 sqlserver

獲取指定頁的資料 create procedure sppagination tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...