mysql 翻页 存储过程_MySQl通用翻页(存储过程)
发布日期:2021-06-24 11:23:35 浏览次数:3 分类:技术文章

本文共 1741 字,大约阅读时间需要 5 分钟。

#####################################################

#参数表

#1.sqlstr sql语句字符串

#2.pageNo 页码

#3.pageSize 页尺寸

#in sqlstr varchar(50),in pageNo int,in pageSize int

#####################################################

begin

#总页数

declare sqlstr_new varchar(100);

#传入SQL总长度

declare sqlLength int default 0;

#SQL关键字'from'的位置

declare keyWordFromPos int default 1;

#当前页码

set @currentPageNo=0;

#总页数

set @pageTotal=0;

#总记录数

set @records=0;

#转成小写字母SQL

set sqlstr_new=lcase(sqlstr);

#取得SQL总长度

set sqlLength=length(sqlstr);

#取得关键字'from'的位置

set keyWordFromPos=instr(sqlstr_new,'from');

#截取'from'之后的SQL

set @sub_sql_after_from = substr(sqlstr_new,keyWordFromPos,sqlLength);

#重建取记录总数SQL

set @rscount_sql=concat('select count(*) into @records' ,' ',@sub_sql_after_from);

#取得'from'之前的SQL

set @sub_sql_before_from= rtrim(ltrim(substr(sqlstr_new,1,keyWordFromPos-1)));

#重建查询SQL

set @pageSQL=concat(@sub_sql_before_from,',@currentPageNo,@pageTotal,@records',' ',@sub_sql_after_from);

#统计总记录数

prepare rsCount_pre from @rscount_sql;

execute rsCount_pre;

deallocate prepare rsCount_pre;

#分页

set @temp=@records%pageSize;

if @records<=pageSize then

set @pageTotal=1;

elseif @temp=0 then

set @pageTotal=@records div pageSize;

else

set @pageTotal=@records div pageSize+1;

end if;

#过滤不合法的边界,防止页码不合法

if pageNo>@pageTotal then

set pageNo=@pageTotal;

elseif pageNo<1 then

set pageNo=1;

end if;

#生成分页索引

set @currentPageNo=pageNo;

set @pageIndex=1;

set @pageIndex=pageSize*(pageNo-1);

#重组SQL

set @pageSQL=concat(@pageSQL,' ','limit',' ',@pageIndex,',',pageSize);

#查询结果

prepare pageExecute from @pageSQL;

execute pageExecute;

deallocate prepare pageExecute;

end

备注:

1.Mysql中的整除

在Mysql中想用两个整数进行整除不能用"a/b" 而要用 a div b;

2.Mysql中的取余数(取模)

要用 a mod b或 a%b

3.Mysq中四舍五入

round(1.5)

结果为2

转载地址:https://blog.csdn.net/weixin_32473663/article/details/113459912 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql 自带压测工具_centos7中mysql自带压测工具mysqlslap使用
下一篇:kangle主机怎么配置MySQL_kangle web服务+easypanel主机控制面板快速搭建网站和数据库以及管理空间详细教程...

发表评论

最新留言

很好
[***.229.124.182]2024年04月15日 13时49分31秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C++核心准则C.48:如果构造函数需要用常数初始化成员,使用类内初始化器更合适 2019-04-28
C++核心准则C.49:构造函数中应该做的是初始化而不是赋值 2019-04-28
C++核心准则C.50:如果在构造过程中需要“虚行为”,使用工厂函数 2019-04-28
C++核心准则C.51:使用委托构造函数实现所有构造函数的共通动作 2019-04-28
C++核心准则C.52:合理使用继承的构造函数 2019-04-28
基于Chrome浏览器的前端调试 2021-07-01
Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor 2021-07-01
【李宏毅2020 ML/DL】补充:Ensemble: Bagging, Boosting, Adaboost, Gradient Boosting, Stacking 2021-07-01
【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结 2021-07-01
【必收藏】台大李宏毅老师课程 | 资源汇总、笔记总结与索引 2021-07-01
【Computer Organization笔记25】I/O:程序直接控制,程序中断方式,直接存储访问(DMA),通道控制方式 2021-07-01
【Computer Organization笔记26】总线 bus :多个部件之间进行数据传送的共享通道,总线设计 - 总线仲裁、数据传输模式、提高总线性能 2021-07-01
WSL2 下的 Docker 配置,使用网易云镜像 + 更改 docker 文件系统(否则无法 apt update) 2021-07-01
Flask架站基础篇(八)--SQLAlchemy(2) 2021-07-01
Doker容器 2021-07-01
Entity Framework 迁移 2021-07-01
Docker学习笔记--镜像 2021-07-01
Entity Framework 实体状态 2021-07-01
Android性能分析工具记录 2021-07-01
Ios学习基础笔记(一)——实现App基本界面 2021-07-01