DML中NULL和NULL(“”)之间的差异

时间:2017-09-05 09:53:13

标签: dml ab-initio

将NULL值写入DML和使用默认值的NULL之间有什么区别。写NULL值是不是很糟糕?何时决定采用哪种方法。

2 个答案:

答案 0 :(得分:2)

NULL将存储一个字节标志和数据,其中Null('')不存储一个字节标志,另外字段中的任何空白值都将被视为Null,即它具有& #34;"默认情况下,将其视为null。因此,将null与默认值一起使用是一种很好的做法。

答案 1 :(得分:0)

Sarveshmishra是对的。回答你问题的其他部分 - 这是否是好的做法取决于你如何使用记录格式。

NULL as as byte flags 主要是一个明确的(即没有与真实数据冲突的风险)表示在Ab Initio中使用的NULL,这是以额外记录宽度为代价的。

适用于:当图表内部和图表之间需要严格正确的空值处理时(以及当记录宽度和翻译(重新格式化)成本可接受时)

错误:与源系统和目标系统进行基于文件的数据交换。 (请注意,通过批量加载程序(例如SQL Server bcp)的数据库输出是基于文件的。)

NULL(默认值)将NULL编码为特定字符序列(或零宽度字符串)。所选的编码必须与上游/下游的接口契约匹配,否则存在数据冲突的风险(例如:在数据库中,“”<> NULL,但NULL(“”)将“”视为NULL)。 / p>

适合:上游/下游的数据交换,或“”和“NULL”之间的区别并不重要。

不好:保证严格的空值处理。

对于具有严格空值处理和零冲突风险的数据交换,另一种策略是在接口契约中定义显式空标志。