sql 中的NULL小问题 ,大bug

今天在写退款的的SQL的时候遇到一个问题,直接导致之前记录的所有操作日志,清空了,还好自己有看数据的习惯,下面贴上代码

1     UPDATE TradeUser
2     SET
3       UserScore=@UserScore
4       Remark=ISNULL(Remark,‘‘)+‘ ‘+@UserName +‘ 手动取消付款,退还积分‘
5      WHERE UserId=@UserID

执行这句SQL后,备注直接清空,百思不得其解,找不到原因。其实原因很简单,传入的@UserName是NULL,导致字符串和NULL计算结果为NULL,这个知识点 其实都是知道的,只不过用的时候就忽略了 ,可以改成下面的那样

    UPDATE TradeUser
    SET
      UserScore=@UserScore
      Remark=ISNULL(Remark,‘‘)+‘ ‘+ISNULL(@UserName,‘‘) +‘ 手动取消付款,退还积分‘ --这里遇到传入的参数就加上ISNULL()判断,这是一个写代码的习惯问题
     WHERE UserId=@UserID

这类问题是可以避免的,这是一个程序员思维逻辑是否严谨,工作态度是否端正,自己要对自己开发的东西负责人。有疑虑 要多问的,不然出了问题更丢人

02  开发是多加验证条件,尽量避免字段值为空的清空出现,尽量减少代码的执行,不需要执行的情况就应该规避掉。

文章讲的技术点不多,多数都是累赘的叙述,博主表达能力不是很强,不能言简意赅的叙述问题,敬请谅解。

时间: 2024-09-30 00:47:54

sql 中的NULL小问题 ,大bug的相关文章

深入详解SQL中的Null

NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里有多少钱我不清楚,但也不能肯定为0,这时在计算机中就使用Null来表示未知和不确定. 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的"几十亿美元的错误"

深入具体解释SQL中的Null

NULL 在计算机和编程世界中表示的是未知,不确定.尽管中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态.未来状态,比方小明兜里有多少钱我不清楚,但也不能肯定为0,这时在计算机中就使用Null来表示未知和不确定. 尽管熟练掌握SQL的人对于Null不会有什么疑问,但总结得非常全的文章还是非常难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并觉得这是他犯下的"几十亿美元的错误&quo

SQL中的Null深入研究分析

虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的"几十亿美元的错误". 即便是50年后的今天, SQL中的 null 值还是导致许多常见错误的罪魁祸首. 我们一起来看那些最令人震惊的情况. Null不支持大小/相等判断 下面的2个查询,不管表 users 中有多少条记录,返回的记录都是0行: select * from users where

[小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)

[小细节,大BUG]  1. 在不久前,一个朋友出现了这样一个BUG:当UITableView加载cell的时候,自定义的cell,怎么显示,里面的文字总是显示不完全(注意,文字不长).然后,我帮忙给看了下,甚至把在storyBoard中将cell的相关属性都试了下,虽然可以解决,但是效果不理想.最终经过排查,终于发现问题所在:当自定义cell时,因为需要布局子控件,所以他重写了layoutSubviews方法,然而在此方法中没有调用[super layoutSubviews],所以造成了布局混

SQL中的NULL值

除is [not] null之外,空值不满足任何查找条件.–如果null参与算术运算,则该算术表达式的值为null.–如果null参与比较运算,则结果可视为false.在SQL-92中可看成unknown.–如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null.   例:select    sum(SAL)           from     PROF   例:select    count(*)           from     PROF– 详细分析 SQL中的N

SQL中的null

对Oracle SQL中的null小结如下: 1.1       null ? null 值计算的结果仍是null ? null 是一个未分配的.未知的,或不适用的值 ? null不是0,也不是空格 1.1.1       null值的运算 null参数的算术表达式的结果仍然为null SQL>  select '*'||1/null||'*' res1,'*'||1*null||'*' res2, '*'||(1-null)||'*' res3 from dual; RE RE RE -- -

sql中的一些小技巧

在sql中经常要用到字符串的连接操作: 在oracle和mysql中都有contact()函数,只有,sqlserver没有,不过,这三个数据库都支持:+ 来连接字符串! 在mysql中,有个不全补零的函数: select LPAD('2',3,'0'); 在sql server中,我们完全可以使用print 来打印一个数据 print 3+3; 任何一个数据库,最好的,也是最牛逼的教材,就是它的文档,读完文档,整个世界就清晰了

SQL 中【NULL】和【无】烦躁的问题

很烦躁,烦躁的很,总结一下. 先简单的说下: NULL   : 不确定的东西 无       :没有东西 复杂的见下文....... 一 .null值 下面举个最简单的例子,平常工作当中肯定比这个sql复杂的多,在这只是把这个易错点呈现出来,他可能是一个复杂sql出错的小的 不容易被发现的一个问题. 上面是一个很简单表的所有数据.area_num 区域编码 area_name 区域名称 delflag 有无效标识 1有效 0无效(其中淮北 和宣城的delflag为null). 现在想找出有效的那

SQL 语句中关于 NULL 的那些坑

问题描述 今天在跟进公司内部测试平台线上问题的时候,发现一个忽略已久的问题. 为了简化问题描述,将其进行了抽象. 有一张数据表qms_branch,里面包含了一批形式如下所示的数据: id name types 1 dashboard_trunk dashboard 2 monkey_trunk monkey 3 dashboard_projects_10_9_9 dashboard 4 performance_trunk   5 performance_projects_10_9_8 perf