Поделиться через


Оператор LIKE

Оператор LIKE определяет, соответствует ли строка символов указанному шаблону. Указанный шаблон может содержать точно соответствующие символы или метасимвы. Фактически оператор LIKE сопоставляет подстроки, используя подстановочные знаки в следующей таблице.

Знак Описание
[ ] Любой символ в указанном диапазоне ([a-f]) или наборе ([abcdef]).
^ Любой символ, который не входит в диапазон ([^a-f]) или не задан ([^abcdef].)
% Любая строка из 0 (ноль) или более символов. В следующем примере выполняется поиск всех экземпляров, где "Win" находится в любом месте в имени класса: SELECT * FROM meta_class WHERE __Class LIKE "%Win%"
_ (подчеркивание) Любой символ. Любой литерал подчеркивания, используемый в строке запроса, должен быть экранирован путем помещения его в [] (квадратные скобки).

 

Например, следующий код Оболочки Power извлекает все экземпляры класса Win32_operatingSystem , свойство Name которого начинается с FirstName:

Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"

Поскольку символ подчеркивания является метасимвигом, если целевой объект запроса имеет символ подчеркивания, escape-символы "[]" должны окружать его. Например, можно запросить все классы с двойным подчеркиванием в имени.

Чтобы найти все классы с двойным подчеркиванием в имени, необходимо экранировать оба символа подчеркивания с помощью [] (квадратные скобки), например:

SELECT * FROM meta_class WHERE __CLASS LIKE "%[_][_]%"

Вы можете отрицать оператор LIKE, используя NOT; Для этого не забудьте поместить 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 "%\\%"'

Операторы WQL