• SQL点滴29—错误无处不在


    我只想说以下是很基础的sql知识,但是很容易犯错。所以睁大我们的眼睛,屏住我们的呼吸,小心的检查吧!
     
    案例1
    if not exists (select OrderID from CorpEmailSendQueue where orderid=600643425)
    begin
        exec sp3_CorpEmailSendQueue_i @ID=NULL,@OrderID=600643425, @OrderType='F', @EmailType='-2',@ResendTime=0,@SendTime=NULL,@CurrentStatus='u',@GenerateTime=NULL
    end

    上面这个是最终正确的写法,看上去很简单吧,但是有些地方是容易犯错的。

     

    错误1

    if not exists select count(1) from CorpEmailSendQueue where orderid=600643425
    begin
        exec sp3_CorpEmailSendQueue_i @ID=NULL,@OrderID=600643425, @OrderType='F', @EmailType='-2',@ResendTime=0,@SendTime=NULL,@CurrentStatus='u',@GenerateTime=NULL
    end

    看上去没问题吧,但是就会报错,错误提示如下:

    Msg 156, Level 15, State 1, Line 1
    Incorrect syntax near the keyword 'select'. 需要使用园括号把select count(1) from CorpEmailSendQueue where orderid=600643425包起来。

     

    错误2

    if not exists (select count(1) from CorpEmailSendQueue where orderid=600643425)
    begin
        exec sp3_CorpEmailSendQueue_i @ID=NULL,@OrderID=600643425, @OrderType='F', @EmailType='-2',@ResendTime=0,@SendTime=NULL,@CurrentStatus='u',@GenerateTime=NULL
    end

    看上去也没有问题吧,但是把OrderID换成count(1)之后exists就不起作用了,select count(1) from CorpEmailSendQueue where orderid=600643425 在任何情况下都是有值的,我的意思是即使是0也是exists的,所以任何情况下都不会执行下面的存储过程。

    案例2

    select datediff(hh,'2013-11-21 16:50','2013-11-21 17:35') 这个得到的结果居然是1,我再想sql server是不是抽风了,这两个时间之间相差45分钟,还不到1小时,无奈只能使用select datediff(mi,'2013-11-21 16:50','2013-11-21 17:35')得到的结果是45。

    还有个小知识,如果要得到当前时间可以用getdate(),如果是utc时间呢,就是当前时间减8,可以使用getutcdate()。

    作者:Tyler Ning
    出处:http://www.cnblogs.com/tylerdonet/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,请微信联系冬天里的一把火

  • 相关阅读:
    postman+newman+jenkins 接口自动化问题
    rabbitMQ Management http://localhost:15672/ 打不开
    转-轻松几步搭建SVN服务器
    Eclipse调优
    转- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)
    calculate Leave Days
    验证只能输入中文
    js 只能限制只能输入数字和转大写方法
    拿来自勉
    JAVA的容器---List,Map,Set的区别
  • 原文地址:https://www.cnblogs.com/tylerdonet/p/2934557.html
Copyright © 2020-2023  润新知