使用WHERE子句来缩小数据,事件或模式查询的范围。有关详细信息,请参阅使用WQL查询。WHERE子句由一个属性或关键字,一个运算符和一个常量组成。所有WHERE子句必须指定Windows Management Instrumentation(WMI)查询语言(WQL)中包含的预定义操作符之一。您可以使用以下表单之一将WHERE子句附加到SELECT语句中:
SELECT * FROM class WHERE property operator constant
SELECT * FROM class WHERE constant operator property
其中*是查询的项,class是要查询的类,constant,operator和property是要使用的常量,运算符和属性或关键字。有关SELECT语句的更多信息,请参阅数据查询的SELECT语句,事件查询的SELECT语句或模式查询的SELECT语句。
常量的值必须是属性的正确类型。此外,操作员必须在有效的WQL运算符列表中。属性名称或常量必须出现在WHERE子句中的运算符的两边。任意算术表达式不能使用。例如,以下查询仅返回表示NTFS驱动器的Win32_LogicalDisk类的实例:
SELECT * FROM Win32_LogicalDisk WHERE FileSystem = "NTFS"
属性名称不能出现在操作员的两边。以下查询是无效查询的示例:
SELECT * FROM PhysicalDisk WHERE Partitions < (4 + 7 - 2)
OR (Partitions = SectorsPerTrack / 7)
对于WHERE子句中类描述符的大多数使用,WMI将查询标记为无效并返回错误。但是,在WMI中使用类型为目的的点(。)运算符。例如,如果Prop是MyClass的有效属性,并且类型为目的,以下查询是有效的:
SELECT * FROM MyClass WHERE Prop.embedprop = 5
比较测试总是不区分大小写。也就是说,以下三个语句全部评估为TRUE:
SELECT * FROM MyClass WHERE Prop1 = "cat"
SELECT * FROM MyClass WHERE Prop1 = "CAT"
SELECT * FROM MyClass WHERE Prop1 = "cAt"
您可以构造一个包含布尔数据类型的查询,但唯一有效的布尔运算符类型是=,!=和<>类型。值TRUE等价于数字1,值FALSE等价于数字0。以下示例是将布尔值与值TRUE或FALSE进行比较的查询。
SELECT * FROM MyClass WHERE BoolProp = 1
SELECT * FROM MyClass WHERE BoolProp = TRUE
SELECT * FROM MyClass WHERE BoolProp <> FALSE
SELECT * FROM MyClass WHERE BoolProp = 0
SELECT * FROM MyClass WHERE BoolProp = FALSE
SELECT * FROM MyClass WHERE BoolProp != 1
SELECT * FROM MyClass WHERE BoolProp != FALSE
SELECT * FROM MyClass WHERE BoolProp <> FALSE
以下示例是尝试使用无效操作数的无效查询。
SELECT * FROM MyClass WHERE BoolProp <= TRUE
SELECT * FROM MyClass WHERE BoolProp >= 0
SELECT * FROM MyClass WHERE BoolProp > FALSE
SELECT * FROM win32_computersystem WHERE infraredsupported >= null
可以使用逻辑运算符和括号子表达式将多组属性,运算符和常量组合在WHERE子句中。每个组必须与以下查询中显示的AND,OR或NOT运算符相连。第一个查询检索Win32_LogicalDisk类的所有实例,名称属性设置为C或D:
SELECT * FROM Win32_LogicalDisk WHERE Name = "C:" OR Name = "D:"
第二个查询检索名为“C:”或“D:”的磁盘,只要它们有一定的剩余空间并具有NTFS文件系统:
SELECT * FROM Win32_LogicalDisk WHERE (Name = "C:" OR Name = "D:")
AND FreeSpace > 2000000 AND FileSystem = "NTFS"
此示例显示使用WHERE子句的模式查询。
SELECT * FROM meta_class WHERE __this ISA "myClassName"
类meta_class将其标识为模式查询,名为__this的属性标识查询的目标类,ISA运算符请求目标类的子类的定义。因此,上述查询返回myClassName类的定义及其所有子类的定义。
以下示例是使用与ASSERIATORS OF语句WHERE的数据查询:
ASSOCIATORS OF {myClass.keyVal="Value1"} WHERE ClassDefsOnly
下一个示例显示使用ASSOCIATORS OF和WHERE的模式查询:
ASSOCIATORS OF {myClass} WHERE SchemaOnly
以下示例是使用REFERENCES OF语句和WHERE的数据查询:
REFERENCES OF {myClass.keyVal="Value1"}
WHERE RequiredQualifier = myQual
最后一个示例是使用REFERENCES OF和WHERE的模式查询:
REFERENCES OF {myClass} WHERE SchemaOnly
除了WMI DATETIME格式之外,WQL WHERE子句还支持其他几种日期和时间格式:
· | WQL支持的日期格式 |
· | WQL支持的时间格式 |