NULL值的操作

NULL值或缺省值在数据分析中很常见。为达到最优性能,DolphinDB对NULL值进行了优化处理。本章中,我们会解释如何表示,初始化和处理NULL值。我们还会讨论NULL值在普通向量函数、聚合函数以及高阶函数中的使用方法。

DolphinDB内有两种类型的NULL值:VOID类型的NULL和带类型的NULL(如int(), double(), string(NULL)等)。通常,无返回值的函数是不能放在赋值语句或表达式中的,如果出现此类操作,将会得到一个VOID类型的NULL。通过函数 isVoid 可以检查VOID类型的NULL, 通过函数 isNullisValid 可以检查所有NULL值,包括VOID和有类型的NULL。对于不关心NULL类型的用户,建议使用 isNullisValid 进行检查。 在进行运算时,无法对不同类型的数据进行操作,因此,DolphinDB会将VOID类型的NULL转换成相应类型的NULL。

$ typestr(NULL);
VOID
$ def f(){
$    1+2
$ }
$ typestr(f())
VOID
$ typestr(int());
INT
$ isVoid(NULL)
true
$ isVoid(int())
false
$ isNull(NULL)
true
$ isNull(00i)
true

不同类型的NULL进行运算时,会将VOID的NULL转换为对应的类型,再进行操作。

$ int()==NULL
true
$ in(1 00f NULL 1.3, 00f) == [false, true, true, false]
[true,true,true,true]