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