SQL access 2d array element

0

Hi I have this payload and want to do some comparison operation in aws iot rule:

{
"state":
  {
    "reported":{
        "temp": [
                 [
                 1,
                0,
                2,
                "hello world",
                "-",
               "",
               "",
              0
               ] ,
              []
             ]
           }
     }
}

. I want to compare if temp[0][2] is equal to 2 or not. I have written this sql statement

SELECT * FROM '$aws/topic' WHERE state.reported.temp[0][2] = 2 

but this throws following exception

SqlParseException
Expected a comparison operation: JPathNode(List(IdentNode(state), IdentNode(reported), IdentNode(temp))) state.reported.temp[0][2] =2 -------------------------------------------------^ at 1:50

So anyone up for help? Thanks

已提问 2 年前338 查看次数
1 回答
2
已接受的回答

To access elements in a collection (array, string, object ) use the SQL function get function:

In your case, use get() instead of square brackets to access your array element:

SELECT * as result FROM 'topic' where get(get(state.reported.temp,0),2) = 2
profile pictureAWS
专家
Jan_B
已回答 2 年前
profile pictureAWS
专家
Greg_B
已审核 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则