联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
5.10 表达式
更新时间:1/13/2023, 4:51:10 AM

类型表达式

类型

例子

十进制型整数

10, -213

十进制小数

1.25, 3.604E-14, -2.31

十进制型长整数

199345843592l, -12381543923L

任意精度的有符号十进制数

123bd,123.31BD

八进制整数(0开头)

084, -096

字符串

"星环", '信息科技'

布尔类型

true, false, TRUE, FALSE

数组类型

[1,2,3],["星环","信息科技"],[decimal(10.2,3,1),decimal(100.2,3,2)] ,[localdatetime("2021-01-18T09:50:12.627"),localdatetime("2021-11-18T03:50:12.113")]

时间类型

localdatetime("2021-01-18T09:50:12.627")

Decimal类型

decimal(10.2,3,1)

地理空间类型

point(20.5,30.5),point(-20.5,-30.5)

时序类型

{localdatetime("2023-01-01T15:16:17")::"nice"}, {localdatetime("1997-01-01T15:16:17")::1997, localdatetime("1998-01-01T15:16:17")::1998}

指代型表达式

类型

例子

变量

x, rel, myVar

属性

a.prop, x.prop, rel.'surprise that this is a kind of property'

函数调用

lenght(p), sum(a.salary)

路径

(a)-[]->(b)-[]->(c)

混合型表达式

类型

例子

符号运算

1*2+3, 1<2, -x

正则表达式

transwarp.name =~'[a-z]'

简单字符串匹配

a.name starts with "trans"

逻辑控制

case n.category when 'food' then 1 when 'car' then 2 else 3 end

命名规则

类型、属性名和变量名,遵循如下命名规则:

规则 正确用例 错误用例

必须以字母开头

accustom

_accustom

可以有数字,但不能作为开头

name1

1name

不能包含符号,下划线除外

name_g

name*

大小写敏感

School, sChool, school是三个不同的类型;x和X是不同的变量

单词间多余的空格会被自动删去: match (a) return a 和 match (a ) return a 等价。

保留关键字

在当前版本中,TEoC不区分保留关键字的大小写,部分留作未来使用。

ADD • ALL • ALTER • AND • AS • ASC • ASCENDING • ASSERT • BULK • BY • CALL • CASE • COMMIT • CONSTRAINT • CONTAINS • COPY • CREATE • CSV • DATABASE • DECL • DELETE • DESC • DESCENDING • DESCRIBE • DETACH • DISTINCT • DO • DROP • ELSE • END • ENDS • EXISTS • FILE • FOR • FOREACH • FROM • IN • INDEX • INSERT • INSTALL • INTO • IS • JOIN • JSON • KEY • LIMIT • LKJOIN • LOAD • MANDATORY • MATCH • MERGE • NODE • NOT • OF • ON • OPTIONAL • OR • ORDER • PERIODIC • REDUCE • RELATIONSHIP • REMOVE • REQUIRE • RETURN • RUN • SCALAR • SCAN • SCHEMA • SEARCH • SET • SHOW • SKIP • START • STARTS • THEN • TRUNCATE • UNION • UNIQUE • UNWIND • UPDATE • UPSERT • USING • WHEN • WHERE • WITH • XOR • YIELD • false • null • true

在查询语句中使用保留关键字作变量名或者类型名等场景,TEoC 与很多其他语言一样,需要使用反引号"`" 将关键字括起来, 例子如下:

match (`true`) return `true`;
复制

符号

类型

符号

示例

属性符号

.

match (a) return a.name;

数学符号

+, -, *, /, %, ^

return 1 + 2;

比较符号

=, <>, !=, <, >, ⇐, >=, IS NULL, IS NOT NULL

详见《比较符号》小节

字符串匹配符号

STARTS WITH, ENDS WITH, CONTAINS, =~(正则表达式)

详见《字符串匹配符号》小节

逻辑符号

AND, OR, XOR, NOT

详见《逻辑符号》小节

字符串运算符号

字符串合并

return "Shanghai" + ", China";

集合符号

集合操作

详见《集合符号》小节

比较符号

查询

返回

return 1 = 2

false

return 1 < 2

true

return 1 is null

false

return 1 is not null

true

return 1 <> 1

false

return 1 != 2

true

字符串匹配符号

查询

返回

match (a) with tostring(a.name) as name where name starts with "abc" return name

abcTest

match (a) with tostring(a.name) as name where name ends with "abc" return name

testabc

match (a) with tostring(a.name) as name where name=~"t[a-z]+" return name

test

逻辑符号

查询

返回

match (a) where a.prop1 = 1 and a.prop2 = 2 return uid(a)

uid1

match (a) where a.prop1 = 1 or a.prop2 = 2 return uid(a)

uid2

match (a) where a.prop1 = 1 xor a.prop2 = 2 return uid(a)

uid3

match (a) where not a.prop1

uid4

集合符号

查询

返回

return 1 in [1, 2]

true

unwind [1, 2, 3] as p return p

1 2 3

转义字符

转义字符

十六进制

含义

\a

0x07

响铃

\b

0x08

退格,将当前位置移到前一列

\f

0x0C

换页,将当前位置移到下页开头

\n

0x0A

换行,将当前位置移到下一行开头

\r

0x0D

回车,将当前位置移到本行开头

\t

0x09

水平制表

\v

0x0B

垂直制表

\\

0x5C

反斜线

\'

0x27

单引号

\"

0x22

双引号

\?

0x3F

问号

\uhhhh

4位十六进制数据所表示的字符,如\u0014

\Uhhhhhhhh

8位十六进制数据所表示的字符,如\U0002A6A5

TEoC与很多其他语言一样,当字符串中含有转义字符时,将对所指符号进行转义, 例子如下所示,其返回结果是一个双引号。

return "\"";
复制
如果TEoC语句中的字符串含有转义字符,会自动将转义字符转义。如不需要转义,可以通过 set crux.escape.sequence.enabled = false 来关闭自动转义功能。