Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-types/null-type/ Documentation version: v5.3.2 # 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 谓词](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/predicates/null/)。 - 了解`NULL`的比较规则,请参见[比较谓词](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/predicates/comparison/)。 - 了解`NULL`的类型转换规则,请参见[类型转换表达式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/expressions/cast/)。 - 了解函数如何处理`NULL`,请参见[函数的 NULL 行为](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/#null)。 Note 判断值是否为`NULL`时,应使用`IS NULL`或`IS NOT NULL`,不要使用普通等值比较。