之前用過的一些儲存過程分頁
大多數都只能根據主鍵排序,可是實際上,我們經常需要依據非主鍵排序並分頁,比如,按工資大小
下面的**能完成工作
alter
procedure
dbo.getpagerecord
( @tblname
varchar
(255
),
--表名
@fldname
varchar
(255
),
--排序字段
@keyfield
varchar
(255
),
--主鍵
@pagesize
int=
10,
--頁尺寸
@pageindex
int=
1,
--頁碼
@iscount
bit=
0,
--返回記錄總數, 非 0 值則返回
@ordertype
bit=
1,
--設定排序型別, 非 0 值則降序
@strwhere
varchar
(4000) =
''--
查詢條件 (注意: 不要加 where)
) as
setnocount
ondeclare
@pagelowerbound
intdeclare
@pageupperbound
int--
set the page bounds
set@pagelowerbound
=@pagesize
*@pageindex
set@pageupperbound
=@pagelowerbound
+@pagesize +1
--create a temp table to store the select results
create
table
#tmp
( recno
intidentity(1
, 1
) not
null
, oldid
int)
--generate record
declare
@sqlstr
varchar
(6000
) set
@sqlstr='
select '+
@keyfield+'
from '+
@tblname
if(@strwhere
<>
'')
begin
set@sqlstr
=@sqlstr+'
where ('+
@strwhere+'
)'
endset
@sqlstr
=@sqlstr+'
order by '+
@fldname
if(@ordertype=0
) begin
set@sqlstr
=@sqlstr+'
asc'
endelse
begin
set@sqlstr
=@sqlstr+'
desc
'end
set@sqlstr='
insert into #tmp (oldid) '+
@sqlstr
execute
(@sqlstr)
set@sqlstr='
select tablea.* from '+
@tblname+'
tablea (nolock), #tmp t where t.oldid = tablea.'+
@keyfield+'
and t.recno > '+
cast
(@pagelowerbound
asvarchar)+
'and t.recno < '+
cast
(@pageupperbound
asvarchar)+
'order by t.recno
'execute
(@sqlstr)
對list進行多欄位排序
public class multicompare implements comparator 如果多個欄位的排序方向不全一致,可用此方式,格式固定為 field1 1 field2 1 public multicompare string.fields 重寫compare方法 override p...
根據value欄位對map進行排序
一般來說,我們通常都是通過map中的key欄位進行排序,步驟如下 treemapmap new treemap new comparator 直接新增比較器 public int compare string o1,string o2 但是卻沒有直接的方法能夠進行value排序 1.提取檢視 2.變...
對list集合進行排序並分頁
有時候我們要對不同的資料型別進行排序的時候,一般得取出所有的資料 當然資料量不是上百萬的級別 然後對不同的資料型別進行排序,今天在公司學到一種方法,利用了jdk1.8的特性吧,然後先是根據指定排序後,在進行分頁.在這裡記錄一下 方法 datas是查詢出來的資料,sort是公升還是降排序,order是...