关于MySQL存储过程不支持数组的解决办法
2012-04-21 16:09
477 查看
最近要生成些报表,遇到点难题,现在终于解决了,记录下来,方便大家查看,有问题大家一起交流,QQ:75361420
drop procedure if exists getdata; delimiter $$; create procedure getdata() begin declare hydms varchar(100); declare i int; set hydms = '27,35,36,368,39,401'; #在这里定义一个以逗号分割字符串来作为数组 set i=1; while i <= 6 do #开始循环,这里的6即代表数组的大小 select B1 as '企业名称', B2 as '行业类别', C3 as '企业规模', F4 as '其中:产成品', F5 as '流动资产年平均余额(单位:千元)', F6 as '资产总计(单位:千元)', F7 as '负债合计(单位:千元)', F8 as '产品销售收入(主营业务收入,2009)(单位:千元)', F9 as '产品销售成本(主营业务成本,2009)(单位:千元)', F10 as '产品销售费用(营业费用,2009)(单位:千元)', F11 as '产品销售税金及附加(主营业务费用及附加,2009)(单位:千元)', F12 as '管理费用(单位:千元)', F13 as '财务费用(单位:千元)', F14 as '其中:利息支出(单位:千元)', F15 as '利润总额(单位:千元)', F16 as '本年应交增值税(单位:千元)', F17 as '应收账款净额(单位:千元)', V18 as '全部职工(从业人员平均人数)' from qy09_11 where left(B2,3) like concat(substring_index(substring_index(hydms, ',' ,i),',',-1),'%') #上一行是核心代码,通过两次截串获取到数组元素,第一个参数是要截取的字符串#第二个参数是以什么符号来截取 #第三个参数表示从第几个符号(第二个参数)开始截取 #如果是正数表示从左边开始截取,负数表示从右边开始截取 #当i=2时,第一次截取后是27,35,再截取时从右边截取一个,即获取到36,这样就获取到数组的第二个元素,以此类推 #当然这个被截取的字符串你也可以输入参数传进来,我这里就写死了 order by F8 limit 0,50; set i = i + 1; end while; end$$;
相关文章推荐
- 关于在查询分析器下调试存储过程提示Sqlle.dll错误的一种解决办法
- mysql存储过程中不能使用return的解决办法
- mysql存储过程中 乱码问题解决办法
- mysql调用存储过程的时候,报错ERROR 1436 (HY000): Thread stack overrun: 解决办法
- 关于“变量名在批查询或存储过程内部必须唯一”的解决办法
- 关于MySql在调试过程中出现Driver not loaded Driver not loaded的问题的解决办法
- mysql 存储过程中不能使用 return 的解决办法
- SQL Server 2005 存储过程不支持数组类型参数的变通办法
- mysql存储过程中 乱码问题解决办法
- SQL SERVER 2000 存储过程不支持数组的解决方法!
- 关于:MySQL 安装过程中出现“could not start the service mysql error:0”的解决办法。
- 关于sql存储过程在IDE或数据库中执行报错的解决办法
- mysql开发存储过程中,select结果集再动态的条件下select count(*)统计返回都为0问题解决
- 关于Mybatis 中使用Mysql存储过程的方法
- 关于mysql存储过程的definer的问题
- 关于字符串和byte数组在java和ios之间兼容的解决办法。
- 关于ubuntu下 mysql对表名区分大小写的解决办法
- mysql 存储过程相关错误解决
- 【MySQL】关于MySQL添加索引后提升的查询效率也很少的解决办法
- 关于mysql存储过程的学习