Оператор LIKE
Оператор LIKE определяет, соответствует ли строка символов указанному шаблону. Указанный шаблон может содержать именно соответствующие символы или содержать мета-символы. В действительности оператор LIKE соответствует подстрокам, используя подстановочные знаки в следующей таблице.
Характер | Описание |
---|---|
[ ] | Любой символ в указанном диапазоне ([a-f]) или set ([abcdef]). |
^ | Любой символ не в диапазоне ([^a-f]) или set ([^abcdef].) |
% | Любая строка 0 (ноль) или более символов. В следующем примере обнаруживаются все экземпляры, где находится "Win" в любом месте имени класса: SELECT * FROM meta_class WHERE __Class LIKE "%Win%" |
_ (подчеркивание) | Любой символ. Любой литеральный символ подчеркивания, используемый в строке запроса, должен быть экранирован путем размещения его внутри [] (квадратные скобки). |
Например, следующий код Power Shell извлекает все экземпляры класса Win32_operatingSystem, свойство которого Name начинается с FirstName:
Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"
Поскольку символ подчеркивания является мета символом, если целевой объект запроса имеет символ подчеркивания, экранные символы "[]" должны окружать его. Например, можно запросить все классы с двойным подчеркиванием в имени.
Чтобы найти все классы с двойным подчеркиванием в имени, необходимо экранировать оба символа подчеркивания с [] (квадратные скобки), например:
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 "%\\%"'
Связанные разделы