本节介绍Lindorm CQL语法支持的函数及其使用。
Lindorm CQL支持两类函数:scalar function和native aggregate function。
scalar function:用于获取一些值并生成一个输出。
native aggregate function:用于聚合SELECT语句的多行结果。
Lindorm CQL提供了许多本机的硬编码函数。
常见的scalar function函数和native aggregate function函数如下。
类别 | 函数 |
scalar function |
|
native aggregate function |
|
Cast
Cast函数用于数据类型的转换,支持将一种本机数据类型转换为另一种。
数据类型
Cast函数支持转换的数据类型如下:
转换前 | 转换后 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
转换说明
通过Cast函数转换数据类型,需严格遵守Java的语义规范。
转换示例
CREATE TABLE persioninfo (c1 int PRIMARY KEY, c2 timeuuid);
SELECT avg(cast(c1 as double)) FROM persioninfo;
Now
Now函数用于返回当前的时间。
Now函数不接受任何参数,并在调用该函数时在协调器节点上会生成一个新的唯一timeuuid。因此,在使用Now函数时,在WHERE
语句中基本没有意义,例如对以下表单的查询,不会按设计返回任何结果,因此now()
返回的值保证是唯一的。
SELECT * FROM persioninfo WHERE c2 = now();
MaxTimeuuid和MinTimeuuid
MinTimeuuid和MaxTimeuuid函数用于获取时间戳值(可以是时间戳或日期字符串<Timestamps>),并返回与最小值或最大值时间戳T对应的Timeuuid。
示例
SELECT * FROM persioninfo WHERE c2 > maxTimeuuid('2013-01-01 00:05+0000') AND c2 < minTimeuuid('2013-02-02 10:00+0000') ALLOW FILTERING ;
Datetime
Datetime相关函数用于检索调用函数时的日期和时间。
函数名 | 输出形式 |
|
|
|
|
|
|
|
|
Time Conversion
Time Conversion函数用于将Timeuuid、时间戳或日期转换成Lindorm CQL自带的支持格式。
函数名 | 输入类型 | 转换描述 |
|
| 将 |
|
| 将 |
|
| 将 |
|
| 将 |
|
| 将 |
|
| 将 |
|
| 将 |
Blob Conversion
Blob Conversion系列函数支持将本机类型转换为二进制数据(Blob)。
对于Lindorm CQL支持的每个<native type>类型,函数TypeAsBlob接受一个Type类型的参数并将其作为Blob返回。相反,函数BlobAsType接受64位Blob参数并将其转换为Bigint值。例如,bigintAsBlob(3)是0x0000000000000003,blobAsBigint(0x0000000000000003)是3。
CREATE TABLE persioninfo (c1 text PRIMARY KEY, c2 bigint);
INSERT INTO persioninfo (c1, c2) VALUES ( '11', blobAsBigint(0x0000000000000003));
Count
Count函数用于计算给定列的非空值,还可以对查询返回的行进行计数。
示例
对查询返回的行进行计算:
SELECT COUNT (*) FROM persioninfo;
SELECT COUNT (1) FROM persioninfo;
计算给定列的非空值:
SELECT COUNT (c2) FROM persioninfo;
Max和Min
Max和Min函数用于计算给定列的查询返回的最大值和最小值。
示例
CREATE TABLE persioninfo (c1 text PRIMARY KEY, c2 int);
INSERT INTO persioninfo (c1, c2) VALUES ('k1', 3);
INSERT INTO persioninfo (c1, c2) VALUES ('k2', 4);
SELECT min(c2), max(c2) FROM persioninfo;
Sum
Sum函数用于求和,计算指定列的查询返回值之和。
示例
SELECT sum(c2) FROM persioninfo ;
Avg
Avg函数用于计算给定列查询返回值的平均值。
示例
SELECT avg(c2) FROM persioninfo ;