NULL 类型¶
NULL值表示缺少值,与空字符串、数字0或空容器不同。悦数图数据库开发版在表达式类型推导中使用NULL类型描述尚未确定具体材料类型的NULL值。
NULL类型是非物质值类型,不能作为点或边的属性类型。
查看 NULL 类型¶
使用typeof()函数可以查看NULL表达式的类型:
RETURN typeof(NULL)
返回:
+--------------+
| typeof(NULL) |
+--------------+
| NULL |
+--------------+
NULL 类型、NULL 值和可否为 NULL¶
| 概念 | 示例 | 含义 |
|---|---|---|
NULL类型 |
typeof(NULL) |
当无法根据上下文确定更具体的类型时,为独立NULL表达式推断出的类型 |
NULL值 |
name = NULL |
表示当前没有值 |
| 可为 NULL 的类型 | name STRING DEFAULT NULL |
存储位置允许包含NULL值 |
| 不可为 NULL 的类型 | id INT64 NOT NULL |
存储位置不能包含NULL值 |
例如:
'''
VALUE name STRING = NULL
RETURN typeof(name), name
'''
+--------------+------+
| typeof(name) | name |
+--------------+------+
| STRING | null |
+--------------+------+
变量name的声明类型是STRING,其当前值是NULL。因此,NULL值不表示变量或属性的声明类型已变为NULL。
定义属性时同样如此:
NODE Person (
LABEL Person {
id INT64 NOT NULL,
name STRING DEFAULT NULL,
PRIMARY KEY (id)
}
)
属性name的类型是STRING,DEFAULT NULL表示其默认值为NULL。不能将属性声明为name NULL。
NULL 类型的使用场景¶
NULL类型主要用于表达式类型推导。例如,单独的NULL表达式不包含足够的信息来确定它是字符串、数值还是日期。将它用于具有具体类型的上下文后,系统会按照该上下文处理NULL值。
NULL也可以出现在列表、集合或映射等容器表达式中。容器中出现其他非NULL值时,系统根据这些值推导容器的元素类型。
相关操作¶
- 判断值是否为
NULL,请参见 NULL 谓词。 - 了解
NULL的比较规则,请参见比较谓词。 - 了解
NULL的类型转换规则,请参见类型转换表达式。 - 了解函数如何处理
NULL,请参见函数的 NULL 行为。
Note
判断值是否为NULL时,应使用IS NULL或IS NOT NULL,不要使用普通等值比较。