3.3. 使用复合 LDAP 搜索过滤器
您可以使用在前缀标记中表示的布尔值运算符组合多个 LDAP 搜索过滤器组件,如下所示:
(<boolean-operator>(filter)(filter)(filter)...)
您可以使用以下布尔值运算符:
Operator | 符号 | 描述 |
---|---|---|
和 | Ampersand (&) |
所有指定的过滤器都必须为 true,才能为 true。例如, |
或者 | 垂直栏(|) |
至少一个指定的过滤器必须为 true,声明必须为 true。例如, |
非 | 感叹号(!) |
对于该语句,指定语句不能为 true。只有一个过滤器会受到 not 运算符的影响。例如, |
搜索操作会按照以下顺序评估布尔值表达式:
- Innerest toest parenthetical 表达式最先。
- 然后,服务器会更改顺序,以首先评估最严格的表达式。
当复合搜索过滤器组合到已完成的表达式中时,复合搜索过滤器最有用,例如:
(<boolean-operator>(filter)((<boolean-operator>(filter)(filter))))
您可以将复合过滤器与其他类型的搜索(大约、子字符串及其他运算符)相结合,来获取详细的结果。以下示例过滤器返回所有具有机构单元(ou
)的条目,其 description
属性不包含子字符串 X.500
:
(&(ou=Marketing)(!(description=*X.500*)))
另外,您可以扩展过滤器来返回将 管理器
设置为 example
或 demo
的条目:
(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=example,ou=Marketing,dc=example,dc=com)(manager=cn=demo,ou=Marketing,dc=example,dc=com)))
以下示例过滤器返回没有代表人的所有条目:
(!(objectClass=person))
以下过滤器返回没有代表人员以及通用名称(cn
)与 printer3b
类似的所有条目:
(&(!(objectClass=person))(cn~=printer3b))