关于近期项目的思考 - 2.数据

背景:画面上用户不输入值,传入到数据库保存时有些为NULL,有些为''(空)

方案:对于必须输入项进行必填项Check,不是必须项如果用户未输入值,数据库中传入NULL而不是''(空)。

如果用户输入了空格,则往数据库中传入''(空).

如果对于一个字段未发生编辑往数据库中传入了''(空),则会引发后续一系列问题。

例如:默认以为判断该字段为空的条件为if(element = NULL),但是经过检索数据到前台并保存时,该字段未输入

值,但是由于输入框默认value=”“,会将""传入后台并存入数据库。导致我们在判断时出错。

并且,如果该字段定义为CHAR型,则传入后台中的空值会被存储为对应位数的空格。。当我们再次检索数据

并编辑时,输入框中会初始化从数据库中取出的空格,光标放入输入框时并不是处于最左边。。

总结:应在项目开始前就对数据为空如何进行存储进行统一,避免后期判断和读入的失误。另外,需要特别

注意调用语言本身提供的函数,经过验证后才可使用。例如:PHP提供的empty() 函数,""0"0"NULL

FALSEarray()var $var;以及没有任何属性的对象都将被认为是空的,需要特别认识到,如果输入0时是被

判断为空的。在需求上确认是否输入0就是空,特别是对于金额等数字的处理。

 

背景:由于项目采用的是复式记账法,因此借方金额和贷方金额要保持一致。由于金额不可能全部为整数,

当为小数时需要进行向上取整。此时借方金额为正,贷方金额为负。需保持两个值在取整时绝对值相同。

方案:采用了sqlserver的函数ceiling(),但是该函数处理之后

ceiling(10.11) = 11

ceiling(-10.11) = -10

这时候两个值的绝对值并不想等。

改善案:先取两个值的绝对值,对其进行ceiling()运算,然后计算之后添加上相应的符号。

总结:对于类似金额的处理上,特别需要注意正负值处理后相等的情况。

对于各种数字类的输入,一定要进行位数的检查,避免因为位数溢出造成意想不到的结果。

还有对于NULL值的处理,这一点很重要。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值