数据库分页
在数据库里进行分页处理
最近没事试着写一些简单的存储过程,由于以前很少用到或者很少自己写存储过程。所以历尽各种艰难,让自己也备受打击。
这是我写的两种排序,一种是使用 not in
NOT IN
另一种使用的是row_number,
ROW_NUMBER
说一下我在写的时候进入的一个误区我在使用row_number的时候最后需要拼sql语句刚开始在行号的比较的时候我是这样写的
“
WHERE a> '''+@startnum+''' AND a <'''@endnum+''''
”
然后在建立存储过程的时候没有报错,但在执行存储过程的时候开始出错。。我刚开始以为是我的‘号的不对,然后尝试了各种放置位置,到最后我翻了以前数据库里的存储过程,
才明白自己把这里当成了像VS一样的string字符串的拼接,但是@参数是一个int类型,两种不同的类型是拼不到一块的(不包括可以隐式转换的类型)。后来使用了convert()方法
将参数转化为varchar格式再拼接进去就好了。
还有一点就是row_number与rank 的不同,两个虽然都可以用在排序里,但是row_number 只仅仅是一行行数据的排列,不涉及相同排序的依据,每一行数据返回不同的bigint
值。而rank却是相同的排序依据回返回相同的bigint值。详情请参阅http://bear-study-hard.cnblogs.com/archive/2006/02/09/327723.html