sql 中的NULL小问题 ,大bug
2015-07-11 00:57
323 查看
今天在写退款的的SQL的时候遇到一个问题,直接导致之前记录的所有操作日志,清空了,还好自己有看数据的习惯,下面贴上代码
执行这句SQL后,备注直接清空,百思不得其解,找不到原因。其实原因很简单,传入的@UserName是NULL,导致字符串和NULL计算结果为NULL,这个知识点 其实都是知道的,只不过用的时候就忽略了 ,可以改成下面的那样
这类问题是可以避免的,这是一个程序员思维逻辑是否严谨,工作态度是否端正,自己要对自己开发的东西负责人。有疑虑 要多问的,不然出了问题更丢人
02 开发是多加验证条件,尽量避免字段值为空的清空出现,尽量减少代码的执行,不需要执行的情况就应该规避掉。
文章讲的技术点不多,多数都是累赘的叙述,博主表达能力不是很强,不能言简意赅的叙述问题,敬请谅解。
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 开发是多加验证条件,尽量避免字段值为空的清空出现,尽量减少代码的执行,不需要执行的情况就应该规避掉。
文章讲的技术点不多,多数都是累赘的叙述,博主表达能力不是很强,不能言简意赅的叙述问题,敬请谅解。
相关文章推荐
- windows环境下使用VS2012编译SQLITE3
- mongodb redis memcached的对比
- [DCT]LabVIEW中客户端连接到服务器SQL Server数据库_String方式
- [DCT]LabVIEW中客户端连接到服务器SQL Server数据库_DSN方式
- [DCT]LabVIEW中客户端连接到服务器SQL Server数据库_UDL方式
- [innography]专利搜索与分析数据库
- [EndNote]IEEE Xplore数据库文献导入EndNote
- mysql 数据表的修改
- 解决前台向mysql更新数据的编码问题
- Ubuntu12.04 安装 mongodb
- sqlitedabase提供的CRUD方法
- ListView显示数据库的数据-SimpleCursorAdapter的使用
- sqlitedabase提供的CRUD方法
- ListView显示数据库的数据-SimpleCursorAdapter的使用
- Oracle 11g静默安装软件+手工创建数据库
- Mysql安装问题
- Java操作Oracle数据库
- 实现mysql按月统计的教程
- nodejs mongodb好友关系数据库设计与操作
- linux 下oracle 10g sqlplus中文显示和输入的问题