规则引擎提供多种函数,您可以在编写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 中,a1 与a3 等效,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) | 返回大写字符。 |