Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/value-variable/ Documentation version: v5.3.2 # 原始值变量 原始值变量用于在 GQL 过程中存储值或在过程执行中传递值。原始值变量通过关键字`VALUE`声明。 Note 关键字`VALUE`也可用于定义[聚合值变量](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/)和[子查询表达式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/expressions/subquery/)。在定义值变量(原始值变量和聚合值变量)时,关键字`VALUE`后跟变量名;在子查询值表达式中,其后跟子查询。关键字的含义取决于其使用的上下文。 原始值变量适用于[持久图](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/create/)和[临时图](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/)。它们可以在过程中的任何位置定义,但是必须在引用之前定义好。 ## 语法 语法图源码 primitive_value_variable_definition ```` primitive_value_variable_definition ::= 'VALUE' primitive_value_variable (('TYPED' | '::')? value_type)? ('=' value_expression)? ```` ## 参数 ### `primitive_value_variable` 要定义的原始值变量的名称。`primitive_value_variable`可以是常规标识符或使用反引号(```)包围的分隔标识符。有关标识符的更多信息,请参见[标识符命名规则](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/keywords-identifiers/#_3)。 ### `value_type` 该变量持有的值的数据类型。支持的数据类型包括数值、字符串、布尔值、时间和日期、向量、列表、集合、映射、记录。若未指定,则从值表达式中推断数据类型。 更多信息,请参见[数据类型](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-types/)。 ### `value_expression` 指定该变量的初始值的值表达式。值表达式可以是常量、函数调用或返回单个值的子查询。若未指定,则变量的值自动设为`null`。 更多信息,请参见[值表达式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/#_6)。 ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 定义原始值变量 ```` ''' VALUE a INT = 1 VALUE b::BOOL = true VALUE c TYPED STRING = "hello" VALUE d DOUBLE = 3.14 VALUE e LIST = [1.1, 2.2] VALUE f = RECORD { x: 1, y: "test" } VALUE g = DATE '2022-12-31' VALUE h = DURATION 'P2M' VALUE i = VECTOR<3,FLOAT>([0,1,0]) RETURN a, b, c, d, e, f, g, h, i ''' ```` 返回: ```` +---+------+-------+------+-----------------+--------------+------------+-----+---------------+ | a | b | c | d | e | f | g | h | i | +---+------+-------+------+-----------------+--------------+------------+-----+---------------+ | 1 | true | hello | 3.14 | [1.1000,2.2000] | {x:1,y:test} | 2022-12-31 | P2M | [0.0,1.0,0.0] | +---+------+-------+------+-----------------+--------------+------------+-----+---------------+ ```` ### 使用表达式定义原始值变量 ```` ''' VALUE numPerson = VALUE { USE movie MATCH (v:Person) return count(v) GROUP BY() } VALUE numMovies = VALUE { USE movie MATCH (t:Movie) return count(t) GROUP BY() } USE movie LET numObjs = numPerson + numMovies MATCH (t:Movie)-[e:WithGenre]->(v2:Genre) WHERE v2.id > 18000 RETURN numPerson, numMovies, numObjs, v2.id AS genreId ''' ```` 返回: ```` +-----------+-----------+---------+---------+ | numPerson | numMovies | numObjs | genreId | +-----------+-----------+---------+---------+ | 4064 | 245 | 4309 | 18385 | | 4064 | 245 | 4309 | 18385 | | 4064 | 245 | 4309 | 18385 | | 4064 | 245 | 4309 | 18385 | | 4064 | 245 | 4309 | 18305 | +-----------+-----------+---------+---------+ ````