LIKE 演算子
LIKE 演算子は、文字列が指定されたパターンと一致するかどうかを判断します。 指定されたパターンには、正確に一致する文字、またはメタ文字を含めることができます。 実際、LIKE 演算子は、次の表のワイルドカード文字を使用して部分文字列を一致させます。
文字 | 説明 |
---|---|
[ ] | 指定した範囲 ([a-f]) またはセット ([abcdef]) 内にある任意の 1 文字です。 |
^ | 範囲 ([^a-f]) またはセット ([^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 "%\\%"'
関連トピック