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

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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

您是否遇到如下的业务场景?


金额为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来参与计算;配置的转换规则中;如果源单行所有数据都为空值,那么合计、最大、最小、平均值结果为空;


如果源单行有部分行不为空值的,那么只有非空行参与计算最大、最小、合计、平均值。更多BOTP相关的知识可参考文末链接~


使用数值字段开启允许为空,使用打印插件获取数据时需要注意了 !


原来使用以下5个方法的


int getInt(String propertyName)

int getInt(int index)

int getInt (IDataEntityProperty dp)

long getLong(String propertyName)

long getLong(int index)


需要换成以下3个方法


object get(int index)

object get (String propertyName)

object get (IDataEntityProperty dp)


原因是原来的方法不会取到空值,现在如果数值类型有空值了,会导致与基本数值类型的转换异常。


最后,数值为空,开启允许为空后,会影响性能吗?


会的,可能会严重影响性能。


数据会存入空值,单列索引不存储null值,复合索引不存储全为null的值。对这列采用is null条件时,不能利用到索引查询,只能走全表扫描,影响查询性能。如非业务明确需要,不建议配置使用哦。


更多相关知识请戳链接了解~


数值类型允许为空使用说明

单据列表数值显示设置




#往期推荐#


#  用这招,海量数据的查询导出也能无比顺畅 !

#  开发商标识:新手司机持证上岗啦

 性能诊断-循环“虐恋”

#  轻松玩转报表开发的两种模式

 BOTP增效之路(上):“转换规则”助你一键下推单据

#  BOTP增效之路(下):“反写规则”助你自动实现单据反写



更多精彩内容,“码”上了解!↓



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

您是否遇到如下的业务场景?金额为0与为空,含义不同。如在银企互联-银行账户余额查询列表的昨日余额、可用余额要允许为空,而不能置为0,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息