Operátor LIKE
Operátor LIKE určuje, zda řetězec znaků odpovídá zadanému vzoru. Zadaný vzor může obsahovat přesně znaky, které se mají shodovat, nebo může obsahovat metaznaky. Operátor LIKE odpovídá podřetězeci pomocí zástupných znaků v následující tabulce.
Znak | Popis |
---|---|
[ ] | Libovolný znak v zadaném rozsahu ([a-f]) nebo set ([abcdef]). |
^ | Libovolný znak, který není v rozsahu ([^a-f]) nebo v množině ([^abcdef].) |
% | Libovolný řetězec 0 (nula) nebo více znaků. Následující příklad najde všechny instance, kde "Win" je nalezen kdekoli v názvu třídy: SELECT * FROM meta_class WHERE __Class LIKE "%Win%" |
_ (podtržítko) | Libovolný znak. Všechna literálová podtržítka použitá v řetězci dotazu musí být uvozována umístěním do [] (hranaté závorky). |
Například následující kód prostředí Power Shell načte všechny instance třídy Win32_operatingSystem, jejichž vlastnost Name začíná FirstName:
Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"
Vzhledem k tomu, že podtržítko je metaznam, musí cíl dotazu obsahovat podtržítko, a proto ho řídicí znaky "[]" musí obklopit. Můžete například zadat dotaz na všechny třídy, které mají v názvu dvojité podtržítko.
Pokud chcete vyhledat všechny třídy s dvojitým podtržítkem v názvu, musíte uvozit obě podtržítka pomocí [] (hranaté závorky), například:
SELECT * FROM meta_class WHERE __CLASS LIKE "%[_][_]%"
Příkaz LIKE můžete negovat pomocí příkazu NOT; pokud to chcete udělat, nezapomeňte umístit NOT přímo před název pole. Například:
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 "%\\%"'
Související témata