1.2.9 HQL規格の使用
HQLは,$queryやサポートする演算子などのクエリパラメータを使用して,コレクション(データ)のフィルタリングができるクエリ言語です。
URLとして表現できない記号や文字は,UTF-8形式でURLエンコードしてください。
- 形式
リソースリクエストのコレクションを定義するには,次に示す式を使用してください。
expression ::= "(" expression ")" | binary-expression | expression junction expression junction ::= ( "and" | "or" ) binary-expression ::= (compare-expression | tuple-expression) compare-expression ::= name-expression compare-operation value-expression name-expression ::= property-name | "[" property-name "]" compare-operation ::= ( "eq" | "=" | "ne" | "<>" | "!=" | "gt" | ">" | "lt" | "<" | "ge" |">=" | "le" |"<=" | "starts" | "ends" ) value-expression ::= ( string-expression | number-expression | boolean-expression ) string-expression ::= "'" ([^'] | [']{2})* "'" number-expression::= ( "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" )+ boolean-expression::= "true" | "false" |"TRUE" | "FALSE" tuple-expression ::= name-expression tuple-operation tuple-value-expression tuple-value-expression ::= "[" value-expression ("," value-expression)* "]" tuple-operation ::= ( "in" | "not in" )
「property-name」は,リソースに定義されているメンバー名です。
「value-expression」は,その式が文字列表現,数値表現,真理値表現のどれであるかを表示します。また,これはリソースに定義されているメンバーの実際のデータ型とは異なります。例えば「ISO8601String」型の場合,ISO8601の文字列式として扱われるため,「string-expression」として表示されます。
データ型と表現形式との関係を次の表に示します。
表1‒8 データ型と表現形式との関係 型名
Expression
int/long/float
number-expression
enum
string-expression
String
string-expression
ISO8601String
string-expression
URLString
string-expression
boolean
boolean-expression
HQLでサポートする演算子を,優先される順に次の表に示します。
表1‒9 HQLでサポートする演算子 演算子
説明
指定可能な文法
優先度
eq
等しい。
number-expression,
string-expression(string,enum),
boolean-expression
1
ne
等しくない。
number-expression,
string-expression(string,enum),
boolean-expression
1
gt
より大きい。
number-expression,
string-expression(string,enum),
1
lt
より小さい。
number-expression,
string-expression(string,enum),
1
ge
以上。
number-expression,
string-expression(string,enum),
1
le
以下。
number-expression,
string-expression(string,enum),
1
starts※
開始値。
string-expression(ISO8601Stringを除くstring)
1
ends※
終了値。
string-expression(ISO8601Stringを除くstring)
1
likes※
含まれる。
string-expression(ISO8601Stringを除くstring)
1
in
含まれる。
number-expression,
string-expression(string,enum),
boolean-expression
1
not in
含まれない。
number-expression,
string-expression(string,enum),
boolean-expression
1
and
どちらもtrueである。
compare-expression, tuple-expression
2
or
どちらかがtrueである。
compare-expression, tuple-expression
3
注※ 大文字と小文字は区別されません。
- 使用例
URLエンコード前
...?$query=instanceID in [1000,1001,1002] and status eq 'Warning'
URLエンコード後
...?$query=instanceID%20in%20%5b1000%2c1001%2c1002%5d%20and%20status%20eq%20%27Warning%27