规则引擎提供多种函数,您可以在编写SQL时使用它们,实现多样化数据处理。

使用方法

您可以在SQL语句中,使用函数获取数据或者对数据做处理。

例如:以下示例中,用到了deviceName(),abs(number),topic(number)三个函数。

SELECT case flag when 1 then '开灯' when 2 then '关灯' else '' end flag,deviceName(),abs(temperature) tmr FROM "/topic/#" WHERE temperature>10 and topic(2)='123'
说明 使用函数时,通常单引号代表常量,不带引号或双引号代表变量。如 select “a” a1, ‘a’ a2, a a3中, a1a3等效, a2代表常量 a
函数名 函数说明
abs(number) 返回绝对值。
asin(number) 返回number值的反正弦。
attribute(key) 返回key所对应的设备标签。如果设备没有该key对应的标签,则返回值为空;使用SQL调试时,因为没有真实设备及对应的标签,返回值为空。
concat(string1, string2)

字符串连接。

示例:concat(field,’a’)

cos(number) 返回number值的余弦。
cosh(number) 返回number值的双曲余弦(hyperbolic cosine)。
crypto(field,String)

对field的值进行加密。

第二个参数String为算法字符串。可选:MD2,MD5,SHA1,SHA-256,SHA-384,SHA-512。

deviceName() 返回当前设备名称。使用SQL调试时,因为没有真实设备,返回值为空。
endswith(input, suffix) 判断input值是否以suffix结尾。
exp(number) 返回指定数字的指定次幂。
floor(number) 返回一个最接近它的整数,它的值小于或等于这个浮点数。
log(n, m)

返回自然对数。

如果不传m值,则返回log(n)。

lower(string) 返回小写字符串。
mod(n, m) n%m 余数。
nanvl(value, default)

返回属性值。

若属性值为null,则返回default。

newuuid() 返回一个随机uuid字符串。
payload(textEncoding)

返回设备发布消息的payload转字符串。

字符编码默认UTF-8,即 payload()默认等价于payload(‘utf-8’)。

power(n,m) 返回n的m次幂。
rand() 返回[0~1)之间随机数。
replace(source, substring, replacement)

对某个目标列值进行替换。

示例:replace(field,’a’,’1’)。

sin(n) 返回n值的正弦。
sinh(n) 返回n值的双曲正弦(hyperbolic sine)。
tan(n) 返回n值的正切。
tanh(n) 返回n值的双曲正切(hyperbolic tangent)。
timestamp(format)

返回当前系统时间,格式化后返回当前地域的时间。

format可选,如果为空则返回当前系统时间戳毫秒值,比如timestamp() = 1543373798943,timestamp('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') = 2018-11-28T10:56:38Z。

timestamp_utc(format) 返回当前系统时间,格式化后返回UTC时间。

format可选,如果为空则返回当前系统时间戳毫秒值,比如timestamp_utc() = 1543373798943,timestamp_utc('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') = 2018-11-28T02:56:38Z。

topic(number)

返回Topic分段信息。

如,有一个Topic: /abcdef/ghi。使用函数 topic(),则 返回 “ /abcdef/ghi”; 使用 topic(1),则 返回 “abcdef” ; 使用 topic(2) ,则返回 “ghi”。

upper(string) 返回大写字符。
to_base64(*) 当原始Payload数据为二进制数据时,可使用该函数,将所有二进制数据转换成base64String。
messageId() 返回物联网平台生成的消息ID。