Оператор 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 "%\\%"'
Связанные темы