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 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南