# Operators

SQL comparison operator expressions.

## and

`and(...clauses)`

Returns an expression for the logical `AND`

of the provided *clauses*. The *clauses* array will be flattened and any `null`

entries will be ignored.

## or

`or(...clauses)`

Returns an expression for the logical `OR`

of the provided *clauses*. The *clauses* array will be flattened and any `null`

entries will be ignored.

## not

`not(expression)`

Returns an expression for the logical `NOT`

of the provided *expression*.

## eq

`eq(a, b)`

Returns an expression testing if expression *a* is equal to expression *b*. In SQL semantics, two `NULL`

values are not considered equal. Use `isNotDistinct`

to compare values with `NULL`

equality.

## neq

`neq(a, b)`

Returns an expression testing if expression *a* is not equal to expression *b*. In SQL semantics, two `NULL`

values are not considered equal. Use `isDistinct`

to compare values with `NULL`

equality.

## lt

`lt(a, b)`

Returns an expression testing if expression *a* is less than expression *b*.

## gt

`gt(a, b)`

Returns an expression testing if expression *a* is greater than expression *b*.

## lte

`lte(a, b)`

Returns an expression testing if expression *a* is less than or equal to expression *b*.

## gte

`gte(a, b)`

Returns an expression testing if expression *a* is greater than or equal to expression *b*.

## isNull

`isNull(expression)`

Returns an expression testing if the input *expression* is a `NULL`

value.

## isNotNull

`isNotNull(expression)`

Returns an expression testing if the input *expression* is not a `NULL`

value.

## isDistinct

`isDistinct(a, b)`

Returns an expression testing if expression *a* is distinct from expression *b*. Unlike normal SQL equality checks, here `NULL`

values are not considered distinct.

## isNotDistinct

Returns an expression testing if expression *a* is not distinct from expression *b*. Unlike normal SQL equality checks, here `NULL`

values are not considered distinct.

## isBetween

`isBetween(expression, [lo, hi])`

Returns an expression testing if the input *expression* lies between the values *lo* and *hi*, provided as a two-element array. Equivalent to `lo <= expression AND expression <= hi`

.

## isNotBetween

`isNotBetween(expression, [lo, hi])`

Returns an expression testing if the input *expression* does not lie between the values *lo* and *hi*, provided as a two-element array. Equivalent to `NOT(lo <= expression AND expression <= hi)`

.