Next: SEX Evaluation, Previous: SEX Operands, Up: Selection Expressions [Contents][Index]

The supported operators are arithmetic operators (addition, subtraction, multiplication, division and modulus), logical operators, string operators and field operators.

Arithmetic operators for addition (`+`

), subtraction (`-`

),
multiplication (`*`

), integer division (`/`

) and modulus
(`%`

) are supported with their usual meanings.

These operators require either numeric operands or string operands whose value can be interpreted as numbers (integer or real).

The boolean operators **and** (`&&`

), **or**
(`||`

) and **not** (`!`

) are supported with the same
semantics as their C counterparts.

A compound boolean operator `=>`

is also supported in order to
ease the elaboration of constraints in records: `A => B`

, which
can be read as “A implies B”, translates into `!A || (A && B)`

.

The boolean operators expect integer operands, and will try to convert any string operand to an integer value.

The compare operators **less than** (`<`

), **greater
than** (`>`

), **less than or equal** (`<=`

),
**greater than or equal** (`>=`

), **equal** (`=`

)
and **unequal** (`!=`

) are supported with their usual
meaning.

Strings can be compared with the equality operator (`=`

).

The match operator (`~`

) can be used to match a string with a
given regular expression (see Regular Expressions).

The compare operators **before** (`<<`

), **after**
(`>>`

) and **same time** (`==`

) can be used with fields
and strings containing parseable dates.

See Date input formats.

Field counters are replaced by the number of occurrences of a field with the given name in the record. For example:

The previous expression is replaced with the number of fields named
`Email`

in the record. It can be zero if the record does not
have a field with that name.

The string concatenation operator (`&`

) can be used to
concatenate any number of strings and field values.

'foo' & Name & 'bar'

The ternary conditional operator can be used to select alternatives based on the value of some expression:

expr1 ? expr2 : expr3

If `expr1`

evaluates to true (*i.e.* it is an integer or the string
representation of an integer and its value is not zero) then the
operator yields `expr2`

. Otherwise it yields `expr3`

.

Next: SEX Evaluation, Previous: SEX Operands, Up: Selection Expressions [Contents][Index]