LIKE 演算子
LIKE 演算子は、文字列が指定されたパターンと一致するかどうかを判断します。 指定したパターンには、一致する文字を正確に含めることができます。または、メタ文字を含めることができます。 実際には、LIKE 演算子は、次の表のワイルドカード文字を使用して部分文字列と一致します。
文字 | 形容 |
---|---|
[ ] | 指定した範囲内の任意の 1 文字 ([a から f]) または set ([abcdef])。 |
^ | 範囲 ([^a-f]) または set ([^abcdef]) 内にない任意の 1 文字。 |
% | 0 (ゼロ) 以上の任意の文字列。 次の例では、クラス名の任意の場所で "Win" が見つかったすべてのインスタンスを検索します。SELECT * FROM meta_class WHERE __Class LIKE "%Win%" |
_ (アンダースコア) | 任意の 1 文字。 クエリ文字列で使用されるリテラル アンダースコアは、[] (角かっこ) 内に配置してエスケープする必要があります。 |
たとえば、次の Power Shell コードは、Name プロパティが FirstName で始まる Win32_operatingSystem クラスのすべてのインスタンス取得します。
Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"
アンダースコアはメタ文字であるため、クエリ ターゲットにアンダースコアがある場合は、"[]" エスケープ文字で囲む必要があります。 たとえば、名前に二重アンダースコアが付いているすべてのクラスを照会できます。
名前に二重アンダースコアが付いているすべてのクラスを検索するには、次のように、両方のアンダースコアを [] (角かっこ) でエスケープする必要があります。
SELECT * FROM meta_class WHERE __CLASS LIKE "%[_][_]%"
NOT を使用して LIKE ステートメントを否定できます。これを行うには、フィールド名の前に NOT を直接配置してください。 例えば:
Get-WmiObject -computerName "." -query 'Select * FROM Win32_Printer WHERE Local="TRUE" AND Network ="False" AND DriverName LIKE "%HP%" AND NOT PortName LIKE "%10.%" AND NOT PortName LIKE "%\\%"'
関連トピック