规则引擎提供多种函数,您可以在编写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所对应的设备标签。调用依赖设备,使用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() = 1232323233,timestamp('yyyy-MM-dd HH:mm:ss.SSS')=2016-05-30 12:00:00.000。

topic(number)

返回Topic分段信息。

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

upper(string) 返回大写字符。
to_base64(*) 当原始Payload数据为二进制数据时,可使用该函数,将所有二进制数据转换成base64String。