!!! Syntax and [LDAP Filter Choices]
Are [boolean] expressions that are used within [LDAP SearchFilters] and demonstrate how they can be used for [LDAP Query Examples] that can be used to find specific information using [LDAP].

An [LDAP SearchFilters] consists of one or more [boolean] expressions, with logical [LDAP Filter Choices] prefixed to the expression list.
The [boolean] expressions use the following format:
{{{
Attribute Operator Value
}}}
where Attribute is a valid LDAP attribute name and Value is the the field value.

The filter syntax supports the =, ~=, <, <=, >, >= and ! operators, and provides limited substring matching using the * operator. 

In addition, the syntax also supports calls to [matchingRules] defined in the LDAP data source. 

White space is __NOT__ used as a separator between attribute, [LDAP Filter Choices] and value, and that string values are __NOT__ specified using quotation marks. 

!! Nested Filters
LDAP filters consist of one or more boolean expression(s) which can be linked together by using [LDAP Filter Choices]. The [LDAP Filter Choices] are always placed in front of the operands. This is the so-called 'Polish Notation'. The search criteria have to be put in parentheses and then the whole term has to be bracketed one more time.

!AND Operation:
{{{
    & (...K1...) (...K2...)      
}}}
or with more than two criteria:       
{{{
    (& (...K1...) (...K2...) (...K3...) (...K4...))
}}}


!OR Operation:
{{{
    (| (...K1...) (...K2...))
}}}

or with more than two criteria:
{{{
       (| (...K1...) (...K2...) (...K3...) (...K4...)) 
}}}


! Nested Operators

Every AND/OR operation can also be understood as a single criterion:
{{{
    (|(& (...K1...) (...K2...))(& (...K3...) (...K4...))) 
}}}       
means:        
{{{
    (K1 AND K2) OR (K3 AND K4)
}}}

!! [LDAP Filter Choices]
[LDAP Filter Choices] operate on individual operands for an LDAP attribute, e.g. (givenName=Sandra). 

The [LDAP Filter Choices] specifies the conditions that must be met for a record to be included in the recordset (or collection) that results from a query. An LDAP filter has one or more clauses, each enclosed in parentheses. Each clause evaluates to either True or False.

!! Upper/lower case
Most other string attributes are [case-insensitive] and a hit will be found even if the upper and lower case differs from your search filter.

There are various [MatchingRules] which may be [case-sensitive].

! [Boolean Match]
[Boolean] attributes are in general [case-sensitive]. The use of uppercase, TRUE or FALSE, is usually necessary for filtering [boolean] syntax attributes. Some [LDAP Server Implementations] are __NOT__ [case-sensitive] for booleans, [eDirectory] as an example. 

!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]