7.6.3 LISTおよびALTERコマンドでの属性フィルタ

attribute_filters句を使用すると、LISTコマンドで表示するオブジェクトを指定できます。一部のALTERコマンドでも、attribute_filters句がサポートされています。

attribute_filters句の構文は次のとおりです。

WHERE attribute_filter1 [ AND attribute_filter2 ... ]

attribute_filterNの構文は、次のとおりです。

attribute [ NOT | ! ] operator comparison_value

attributeプレースホルダは、フィルタ処理に使用される属性の名前を表します。次の表に、サポートされている演算子のタイプを示します。これらの演算子は、NOTまたは!と組合せ可能です。

表7-1 属性フィルタでサポートされる演算子

演算子 説明

=

文字列、ステータスまたは数値の属性間の等号をテストします。次に例を示します:

status NOT = normal

>

指定された比較値より大きい属性値かどうかをテストします。次に例を示します:

size > 139920M

<

指定された比較値より小さい属性値かどうかをテストします。次に例を示します:

freeSpace < 100M

LIKE

類似性の一致をテストします。

文字列の比較では、LIKE演算子は、SQLで使用されるものとは異なるワイルドカード文字を使用する大/小文字を区別する正規表現照合を使用します。

たとえば、SQLワイルドカード'%'は'.*'に変換されます。したがって、LIKE 'GD_IO_RQ.*'は、接頭辞GD_IO_RQが付いた文字列に一致します。

数値の比較では、LIKE演算子は、等号(=)演算子と機能的に同等です。同様に、NOT LIKENOT =と同じ動作をします。LIKE演算子を使用した数値比較では、ワイルドカードは使用できません。

サポートされる演算子で使用される場合、comparison_valueは次のデータ型のいずれかです。

  • 数値: 大きい値は、接尾辞M (1024^2)、G (1024^3)またはT (1024^4)を使用して表すことができます
  • リテラル: activenormalなどの値
  • 日時: 有効なISO 8601タイムスタンプを含む値。たとえば、"2024-01-02T00:01:00-07:00"は、UTC−07:00に対応するタイムゾーンで、2024年1月2日の午前0時1分を表します。
  • 文字列: 一重引用符(' ')または二重引用符(" ")で区切られる値
  • NULL: 未割当ての文字列または空のリスト

attribute_filters句を使用するときは、次の点に注意してください:

  • attributeまたはcomparison_valueのいずれかが文字列の場合、常に文字列比較が使用されます。他方の値が文字列でない場合は、暗黙的に比較用の文字列に変換されます。

    たとえば、多くのオブジェクトには、そのオブジェクトのインスタンスの空き領域量(バイト単位)を含む数値のfreespace属性があります。その場合、where freespace = 0Mは、空き領域のないオブジェクトと一致する数値比較です。しかし、where freespace = "0M"は、freespaceの数値に文字Mを含めることはできないため、どのオブジェクトとも一致しない文字列比較です。

  • 等号(=)、大なり(>)または小なり(<)演算子を使用した文字列比較では、大/小文字は区別されません。

    小文字への変換後に同じ文字シーケンスが含まれる場合、文字列は等しいと見なされます。たとえば、 "Apple" = "apple"です。

    大なり(>)または小なり(<)演算子の場合、文字列は、小文字への変換後、各文字のUnicode値に基づいて辞書順で比較されます。違い最初の位置にあるUnicode文字値が最も小さい文字列が、小さい方と見なされます。たとえば、"appendix" < "apple"であるのは、両方の文字列が"app"で始まり、"appendix"'e'文字が"apple"'l'より小さいUnicode値であるためです。文字の位置に違いがなく、文字列の長さが異なる場合、短い文字列が辞書順で長い文字列の前になります。たとえば、"apple" < "apples"です。