字符串¶
NebulaGraph 支持定长字符串和变长字符串。
声明与表示方式¶
nGQL 中的字符串声明方式如下:
- 使用关键字
STRING
声明变长字符串。 - 使用关键字
FIXED_STRING(<length>)
声明定长字符串,<length>
为字符串长度,例如FIXED_STRING(32)
。
字符串的表示方式为用双引号或单引号包裹,例如"Hello, Cooper"
或'Hello, Cooper'
。
字符串读写¶
nGQL 支持以如下方式使用字符串:
- 将 VID 的数据类型定义为定长字符串。
- 将变长字符串设置为 Schema 名称,包括图空间、Tag、Edge type 和属性的名称。
- 将属性值的数据类型定义为定长或变长字符串。
例如:
- 将属性值的类型定义为定长字符串
nebula> CREATE TAG IF NOT EXISTS t1 (p1 FIXED_STRING(10));
- 将属性值的类型定义为变长字符串
nebula> CREATE TAG IF NOT EXISTS t2 (p2 STRING);
如果尝试写入的定长字符串超出长度限制:
- 当该定长字符串为属性值时,写入会成功,NebulaGraph 将截断字符串,仅存入符合长度限制的部分。
- 当该定长字符串为 VID 时,写入会失败,NebulaGraph 将报错。
转义字符¶
反斜杠(\
)在字符串中为转义字符,用于表示特殊字符。
例如,如果想在一个字符串中包含一个双引号("
), 不能直接写"Hello "world""
,因为这会引起语法错误。相反,需要使用反斜杠(\
)来转义双引号,如"Hello \"world\""
。
nebula> RETURN "Hello \"world\""
+-----------------+
| "Hello "world"" |
+-----------------+
| "Hello "world"" |
+-----------------+
同样,反斜杠本身也需要转义,因为它是一个特殊字符。例如,要在字符串中包含一个反斜杠,需要写成"Hello \\ world"
。
nebula> RETURN "Hello \\ world"
+-----------------+
| "Hello \ world" |
+-----------------+
| "Hello \ world" |
+-----------------+
更多转义字符的示例,请参见 Escape character examples。
OpenCypher 兼容性¶
openCypher、Cypher 和 nGQL 之间有一些细微区别,例如下面 openCypher 的示例,不能将单引号替换为双引号。
# File: Literals.feature
Feature: Literals
Background:
Given any graph
Scenario: Return a single-quoted string
When executing query:
"""
RETURN '' AS literal
"""
Then the result should be, in any order:
| literal |
| '' | # Note: it should return single-quotes as openCypher required.
And no side effects
Cypher 的返回结果同时支持单引号和双引号,nGQL 遵循 Cypher 的方式。
nebula > YIELD '' AS quote1, "" AS quote2, "'" AS quote3, '"' AS quote4
+--------+--------+--------+--------+
| quote1 | quote2 | quote3 | quote4 |
+--------+--------+--------+--------+
| "" | "" | "'" | """ |
+--------+--------+--------+--------+
最后更新:
September 6, 2024