Skip to Content
Cypher 手册数据类型

数据类型

本文档全面介绍 NeuG 支持的所有数据类型。

数据类型汇总表

下表展示了 NeuG 支持的所有数据类型及其与 Neo4j 的差异。System Default Value(系统默认值)列表示在用户未在 Schema 中显式定义默认值,且原始数据中未提供相应数据字段(或提供为 Null 值)时,系统在数据导入过程中自动分配的值。此机制可避免产生 Null 值,确保数据一致性,并为后续查询和计算提供稳定的默认值。

类别类型系统默认值NeuG 示例Neo4j 示例
基本类型INT320RETURN CAST(42, 'INT32')RETURN 42
基本类型UINT320RETURN CAST(42, 'UINT32')不支持
基本类型INT640RETURN 9223372036854775807RETURN 9223372036854775807
基本类型UINT640RETURN CAST(9223372036854775807, 'UINT64')不支持
基本类型FLOAT0.0RETURN CAST(3.14, 'FLOAT')RETURN 3.14f
基本类型DOUBLE0.0RETURN 3.14159265359RETURN 3.14159265359d
基本类型BOOLfalseRETURN trueRETURN true
基本类型NULLnullRETURN nullRETURN null
字符串VARCHAR''(空字符串)RETURN 'Hello World'RETURN 'Hello World'
时间类型DATE1970-01-01RETURN date('2022-06-06')RETURN date('2022-06-06')
时间类型DATETIME1970-01-01 00:00:00RETURN timestamp('2022-06-06 12:00:00')RETURN datetime('2022-06-06T12:00:00')
时间类型INTERVAL0 year 0 month 0 day(零时间间隔)RETURN interval('1 year 2 month 3 day')RETURN duration('P1Y2M3D')
复合类型LIST[](空列表)RETURN [1, 2, 3]RETURN [1, 2, 3]
复合类型ARRAY固定大小的子元素默认值,例如 INT32[3] 的默认值为 [0, 0, 0]Schema 中的 readings INT32[3]不支持作为独立的固定大小类型
模式类型NODE{}(空节点){_ID: 0, _LABEL: Person, id: 1, name: marko, age: 29}(:Person {name: 'Alice', age: 30})
模式类型REL{}(空边){_ID: 2, _LABEL: KNOWS, _SRC_LABEL: Person, _DST_LABEL: Person, _SRC_ID: 0, _DST_ID: 2, weight: 1.0}[:KNOWS {weight: 1.0}]
模式类型REPEATED PATH[](空路径){_ID: 0, _LABEL: Person}, {_ID: 4294967298, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Person, _SRC_ID: 0, _DST_ID: 2}, {_ID: 2, _LABEL: Person}, {_ID: 4297064449, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 2, _DST_ID: 72057594037927937}, {_ID: 72057594037927937, _LABEL: Software}(:Person {name: "Kiefer", id: 4, age: 1992})-[:FOLLOWS]->(:Person {name: "Jack", id: 3, age: 1979})-[:FOLLOWS]->(:Person {name: "Kevin", id: 5, age: 1997})

详细介绍

基础类型

INT32

  • 描述:32位有符号整数类型
  • 取值范围:[-2,147,483,648, 2,147,483,647]
  • 查询示例RETURN CAST(42, 'INT32') AS int32_value;

UINT32

  • 描述:32 位无符号整数类型
  • 范围:[0, 4,294,967,295]
  • 查询示例RETURN CAST(42, 'UINT32') AS uint32_value;

INT64

  • 描述:64 位有符号整数类型,整数值的默认类型
  • 范围:[-9,223,372,036,854,775,808, 9,223,372,036,854,775,807]
  • 查询示例RETURN 9223372036854775807 AS int64_value;

UINT64

  • 描述:64 位无符号整数类型
  • 范围:[0, 18,446,744,073,709,551,615]
  • 查询示例RETURN CAST(18446744073709551615, 'UINT64') AS uint64_value;

FLOAT

  • 描述:单精度浮点数
  • 精度:约 7 位小数
  • 查询示例RETURN CAST(3.14, 'FLOAT') AS float_value;

DOUBLE

  • 描述:双精度浮点数,浮点值的默认类型
  • 精度:约 15-17 位小数
  • 查询示例RETURN 3.14159265359 AS double_value;

BOOL

  • 描述:布尔类型,表示 true 或 false 值
  • 取值truefalse
  • 查询示例RETURN true AS bool_value;

NULL

  • 描述:表示缺失或未定义的值
  • 查询示例RETURN null AS null_value;

字符串类型

目前我们只支持 VARCHAR 类型用于字符串。您可以使用 VARCHAR(max_length) 语法指定最大字符长度。max_length 的默认值为 256,最大限制为 65536。 您也可以使用 STRING 直接指定字符类型;STRING 等同于 VARCHAR(256),即默认最大长度为 256 个字符的 varchar 类型。

VARCHAR

  • 描述:使用 UTF-8 编码的可变长度字符串
  • 查询示例RETURN 'Hello World' AS string_value;
  • 长度:可变,受系统限制,默认为 256

时间类型

DATE

  • 描述:用于存储日历日期的日期类型
  • 格式:YYYY-MM-DD
  • 查询示例RETURN date('2022-06-06') AS date_value;

DATETIME

  • 描述:日期和时间组合类型
  • 格式:YYYY-MM-DD HH:MM:SS
  • 查询示例RETURN timestamp('2022-06-06 12:00:00') AS datetime_value;

INTERVAL

  • 描述:INTERVAL 类型表示持续时间或时间间隔,由以下字段组成:yearmonthdayhourminutesecondmillisecondmicrosecond。INTERVAL 类型支持两种主要格式来指定值:
    • 基于日期的组成部分(year、month、day):使用自然语言格式指定。示例:1 year 2 month 3 day
    • 基于时间的组成部分(hour、minute、second、millisecond、microsecond):使用自然语言格式指定。示例:12 hour 12 minute 2 second - 表示 12 小时 12 分钟 2 秒。
  • 查询示例RETURN interval('1 year 2 month 3 day 12 hour 12 minute 2 second') AS interval_value;

复合类型

LIST

  • 描述:包含异构类型值的有序集合
  • 查询示例RETURN [1, 2, 3] AS list_value;

下表展示了 LIST 支持的所有组件类型:

类别类型示例
数值INT32, INT64, UINT32, UINT64, DOUBLE, FLOATRETURN [1, 2, 3.0];
字符串VARCHARRETURN ['marko', 'josh'];
日期DATE, DATETIMERETURN [date('2011-01-25'), timestamp('2011-01-25 11:20:33')];
布尔BOOLRETURN [true, false];
复合LISTRETURN [[1, 2], [4, 5]];

关于 LIST 组件类型的重要说明

NeuG 通过元组数据类型支持列表,这意味着复合类型可以是异构的。以下是一些示例:

在单个列表中混合不同的基本类型:

RETURN ['marko', 2];

在列表中组合节点的不同属性类型:

MATCH (n:Person) RETURN [n.name, n.age];

支持嵌套列表结构:

MATCH (n:Person) RETURN [["name", n.name], ["age", n.age]];

关键技术细节:

  • NeuG 中的列表可以包含不同数据类型的元素(异构列表)
  • 这是通过内部元组数据类型支持来实现的
  • 在可能的情况下,系统会自动处理类型转换
  • 完全支持嵌套列表,以构建复杂的数据结构
  • 系统在保持类型安全的同时,允许列表组合具有灵活性

ARRAY

  • 描述:固定大小的有序集合,其元素共享声明的子类型
  • 语法:使用 T[N],其中 T 为子类型,N 为正整数固定长度
  • 查询示例CREATE NODE TABLE Sensor(id INT64, readings INT64[3], PRIMARY KEY(id));

ARRAY 是 NeuG 中 LIST 的固定大小对应类型。T[] 声明一个可变长度列表,而 T[N] 声明一个恰好包含 N 个元素的数组。数组字面量使用与列表相同的方括号语法;声明的模式或其他类型上下文决定该值是作为 LIST 还是 ARRAY 存储。CAST 并非通用的 LIST/ARRAY 兼容机制。

CREATE NODE TABLE Sensor( id INT64, readings INT32[3], PRIMARY KEY(id) ); CREATE (s:Sensor {id: 1, readings: [10, 20, 30]}); MATCH (s:Sensor) RETURN s.readings;

数组也可用于关系属性:

CREATE REL TABLE Knows( FROM Person TO Person, weights DOUBLE[2] );

多维数组通过链式拼接固定长度来编写。INT32[2][3] 表示一个包含 3 个元素的外部数组,其中每个元素都是一个 INT32[2] 数组:

CREATE NODE TABLE Matrix( id INT64, grid INT32[2][3], PRIMARY KEY(id) ); CREATE (m:Matrix {id: 1, grid: [[1, 2], [3, 4], [5, 6]]});

关键技术细节:

  • 数组值在每个固定大小维度上必须匹配声明的长度
  • CREATE 期间缺失或为 NULL 的数组属性,其每个元素将使用子类型的默认值
  • 支持在 DDL 中使用显式数组默认字面量,例如 prop INT32[3] DEFAULT [1, 2, 3]
  • RETURN、等值过滤、从零开始的索引、SETMERGEcollect()UNWIND 均支持数组值属性
  • CAST 不会在 LISTARRAY 之间进行转换;数组属性值的类型由感知模式的编译器上下文决定
  • 尚不支持将现有数组属性设置为 NULL

图类型

节点

  • 描述:表示图中的节点
  • 内部结构(顺序无关紧要):_ID(内部标识符)、_LABEL(节点类型指示)以及属性字段
  • 查询示例MATCH (n:Person) RETURN n AS node_value;
  • NeuG 格式{_ID: 0, _LABEL: Person, id: 1, name: marko, age: 29}

REL(边)

  • 描述:表示图中的边
  • 内部结构(顺序无关紧要):_ID(边内部标识符),_LABEL(边类型指示),_SRC_ID(源节点内部标识符),_SRC_LABEL(源节点标签),_DST_ID(目标节点内部标识符),_DST_LABEL(目标节点标签)以及属性字段
  • 查询示例MATCH ()-[r:KNOWS]->() RETURN r AS rel_value;
  • NeuG 格式{_ID: 2, _LABEL: KNOWS, _SRC_ID: 0, _SRC_LABEL: Person, _DST_ID: 2, _DST_LABEL: Person, weight: 1.0}

路径

  • 描述:表示由节点和边交替组成的图路径。
  • 内部结构:沿路径的节点和边的有序序列,包括起始和终止节点。
  • 查询示例MATCH (a:Person)-[p*1..2]->(c) RETURN p AS path_value;
  • NeuG 格式{_ID: 0, _LABEL: Person}, {_ID: 4294967298, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Person, _SRC_ID: 0, _DST_ID: 2}, {_ID: 2, _LABEL: Person}, {_ID: 4297064449, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 2, _DST_ID: 72057594037927937}, {_ID: 72057594037927937, _LABEL: Software}
Last updated on