Azure Cosmos DB - SQLクエリのSELECT VALUEを確認する
SELECT句にVALUEを指定した場合の結果を確認したいと思います。
まずはおさらいから。SELECT句では取得するJSONオブジェクトのプロパティを指定します。 次のクエリでは”$1”というプロパティを持ったJSONオブジェクトを取得しています。
クエリ:
select 1
結果:
[
{
"$1": 1
}
]
次のクエリでは”x”いうプロパティを持ったJSONオブジェクトを取得しています。
クエリ:
select 1 as x
結果:
[
{
"x": 1
}
]
おさらいはここまで。
SELECT VALUEの本題に移ります。 次のクエリのようにSELECT VALUEとすると、JSONオブジェクトではなく値そのものを取得できます。
クエリ:
select value 1
結果:
[
1
]
値を取得するためのSELECT VALUEなので、”AS”でプロパティ名を指定するとエラーになります。
select value 1 as x
-- Syntax error, incorrect syntax near 'as'.
ここで、SELECT句でオブジェクト型を指定した場合を確認してみましょう。
クエリ:
select { x: 1 }
結果:
[
{
"$1": {
"x": 1
}
}
]
そのオブジェクトをプロパティに持つオブジェクトを取得できました。
今度は、オブジェクト型に対してSELECT VALUEとして値を取得してみましょう。 オブジェクトそのものを取得できます。
クエリ:
select value { x: 1 }
-- select 1 as xと同じ結果になる
結果:
[
{
"x": 1
}
]
少し混乱しそうになりますが、この結果はselect 1 as x
と同じ結果になります。
というよりも
select 1 as x
は、次の「糖衣構文」とのことです。
select value { x: 1 }
同じ結果になるわけですね。