问题描述
表结构:
SQL输入:
SELECT payload,clientid FROM "must/#"
响应SQL:
insert into sensor (cid,sensor_date)
values (${clientid},${payload})
插入后的数据如下:
怎么只保存msg:后的数据?
环境信息
- EMQ X 版本:较新的企业版EMQX,使用时间不到一个月
- 操作系统及版本:centos7
- 其他
表结构:
SQL输入:
SELECT payload,clientid FROM "must/#"
响应SQL:
insert into sensor (cid,sensor_date)
values (${clientid},${payload})
插入后的数据如下:
怎么只保存msg:后的数据?
你的 Payload 内容是什么可以发一下吗
public static void test() throws MqttException {
MqttClient client = MqttClientUtil.getMqttClient("test1", "test1", "123".toCharArray());
Random random = new Random();
int i = random.nextInt(100);
Integer integer = i;
String string = "msg:"+integer.toString();
byte[] bytes = string.getBytes();
client.publish("must/test1",bytes,2,false);
}
测试的数据通过这个java程序发出
websocket订阅后收到的数据是这样的
可以查看这里面的函数:
SELECT
replace(payload.x, 'msg:', '') as c,
int(c) as c
FROM
"#"
payload: {"x": "msg:10"}
result: {
"c": 10
}
我的规则匹配是这样的
SELECT
int(replace(payload.msg, 'msg:', '')) as a
FROM "must/#"
测试结果是
{
"a": 1
}
可是规则却一直不命中
主题设置为 “#” 也同样没用命中