数值类型允许为空,您了解吗?

您是否遇到如下的业务场景?
金额为0与为空,含义不同。如在银企互联-银行账户余额查询列表的昨日余额、可用余额要允许为空,而不能置为0,其含义不是金额是0,而是银行未提供此数据。
实际业务场景中,为空往往指未发生业务,为0指发生了金额、数量为0的业务。
那当我们该如何解决此类业务场景问题呢?别急,听小编缓缓为您道来~
1 配置字段属性
针对上述的业务场景,“数值类型允许为空”应运而生。
打开苍穹开发平台,添加一个金额字段,我们会看到“允许为空”按钮,点击开启。苍穹默认情况下是关闭为零显示按钮的,既然要区分0和空值,自然要把为零显示开关也一并打开了,之后点击保存允许为空的金额字段就设计好了。

2 数据库变更
新增的字段平台会生成表建字段语句,如果历史数值字段想改成支持允许为空,除历史数据升级之外,还需要修改数据表字段属性。
下图以Oracle数据库可视化工具Navicat操作为例:
方法1.使用可视化工具修改
具体操作内容如下图所示:

方法2.使用SQL脚本修改
以Oracle数据库操作为例:
语法:ALTER TABLE <表名> MODIFY <列名> NULL;
示例:ALTER TABLE T_TESTNULL MODIFY FINTEGERFIELD NULL;
默认值可设置亦可不设置。
那么小伙伴们又有问题了,敲黑板划重点了。。。
问题一:处理金额支持允许为空,还有其他数值类型支持么?
当然了,为了满足更多的业务场景,我们的整数、长整数、小数、单价、数量控件也都支持允许为空的设置。
问题二:开启允许为空后,后续如果想关闭允许为空该怎么做呢?
对于已经录入空值的数据,此时因为关闭了允许为空,虽然数据库保存的是空值,但页面展示的是0。既然都不允许为空了,最好把数据库表中的空值改为0,这个时候需要使用到SQL脚本,下面以Oracle数据库操作为例:
语法:UPDATE <表名> SET <列名> = 0 WHERE <列名> IS NULL;
示例:
UPDATE T_TESTNULL SET FINTEGERFIELD = 0 WHERE FINTEGERFIELD IS NULL;
必要的情况下,字段设置成不允许为空:
ALTER TABLE T_TESTNULL MODIFY FINTEGERFIELD NOT NULL;
问题三:数值为空的情况下对BOTP业务流有影响吗?
BOTP反写方式为累加或扣减时,如果数据为空值,将当做0来参与计算;配置的转换规则中;如果源单行所有数据都为空值,那么合计、最大、最小、平均值结果
数值类型允许为空,您了解吗?
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



