实际工程中请不要使用select *

        工程中不要使用select * 的建议以前也看到过,不过由于没有实际遇到因select * 出现问题,也就没有太多感受。学校里面,老师教的时候很多都是写得select * ,导致模仿能力很强的,好学的同学就把老师的写法给学会了,而且他们也人为这种写法简单,少写几个字母是几个字母。

        最近我们的实际项目因为有个同学因为在实际工程中使用了select * ,捅出了个大篓子。

        先说一下背景,那个项目是移动的一个电商项目,其中的一个子项目,卖农产品的,主要负责商品、订单核心逻辑处理。其中有个商品定时下架的功能,本来这种功能是个很简单得功能,也没什么难度;实现就是用spring的triger就可以了,很简单的。每几分钟检查一下,看看有没有需要下架的商品,把商品状态改一下就可以了。在查商品的时候,就写了一个select * 把商品表的所有属性都查出来了,商品表有个字段是时间类型,select *  查出来的该字段也是时间类型,没有作日期格式转换,日期格式查出来的结果就是,YYYY-MM-DD HH24:mi:ss.S,查出来,秒后面还有东西。用这个日期格式去跟新表的时候,把字符串格式转换为日期格式,写了to_date(#datetime#,'yyyy-mm-dd hh24:mi:ss'),代码执行的时候,就抛出了数据库异常。知道为什么异常么,就是yyyy-mm-dd hh24:mi:ss.S转换为to_date(#datetime#,'yyyy-mm-dd hh24:mi:ss')出错了。悲剧啊!导致所有到点的商品都下不了架,还好升级的时候有个检查日志的好习惯,发现了异常,找到问题后,把select * 改为查询每个字段,查询的时候并把日期格式转成了yyyy-mm-dd hh24:mi:ss。问题解决,手工回家睡觉。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值