LIKE Operator
Operator LIKE określa, czy ciąg znaków pasuje do określonego wzorca. Określony wzorzec może zawierać dokładnie znaki, które mają być zgodne, lub może zawierać znaki meta. W efekcie operator LIKE pasuje do podciągów przy użyciu symboli wieloznacznych w poniższej tabeli.
Znak | Opis |
---|---|
[ ] | Dowolny znak w określonym zakresie ([a-f]) lub ustawiony ([abcdef]). |
^ | Dowolny znak inny niż w zakresie ([^a-f]) lub ustawiony ([^abcdef].) |
% | Dowolny ciąg 0 (zero) lub więcej znaków. Poniższy przykład znajduje wszystkie wystąpienia, w których "Win" znajduje się w dowolnym miejscu w nazwie klasy: SELECT * FROM meta_class WHERE __Class LIKE "%Win%" |
_ (podkreślenie) | Dowolny znak. Wszelkie podkreślenia literału używane w ciągu zapytania muszą zostać uniknięci przez umieszczenie go wewnątrz [] (nawiasy kwadratowe). |
Na przykład poniższy kod powłoki Power Shell pobiera wszystkie wystąpienia klasy Win32_operatingSystem, której właściwość Name zaczyna się od FirstName:
Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"
Ponieważ podkreślenie jest znakiem meta, jeśli element docelowy zapytania ma podkreślenie, znaki ucieczki "[]" muszą go otaczać. Można na przykład wykonać zapytanie dotyczące wszystkich klas, które mają podwójne podkreślenie w nazwie.
Aby zlokalizować wszystkie klasy z podwójnym podkreśleniem w nazwie, należy ująć oba podkreślenia za pomocą znaku [] (nawiasy kwadratowe), na przykład:
SELECT * FROM meta_class WHERE __CLASS LIKE "%[_][_]%"
Instrukcję LIKE można negować przy użyciu instrukcji NOT; w tym celu pamiętaj, aby umieścić nie bezpośrednio przed nazwą pola. Na przykład:
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 "%\\%"'
Tematy pokrewne
-
operatory WQL