Skip to main content

Comparison operators \

Range operator: BETWEEN

The BETWEEN operator tests if a value is within a specified range. It uses the syntax value BETWEEN min AND max:
The statement shown above is equivalent to the following statement:
To test if a value does not fall within the specified range use NOT BETWEEN:
The statement shown above is equivalent to the following statement:
A NULL in a BETWEEN or NOT BETWEEN statement is evaluated using the standard NULL evaluation rules applied to the equivalent expression above:
The BETWEEN and NOT BETWEEN operators can also be used to evaluate any orderable type. For example, a VARCHAR:
Note that the value, min, and max parameters to BETWEEN and NOT BETWEEN must be the same type. For example, Trino will produce an error if you ask it if John is between 2.3 and 35.2.

IS NULL and IS NOT NULL

The IS NULL and IS NOT NULL operators test whether a value is null (undefined). Both operators work for all data types. Using NULL with IS NULL evaluates to true:
But any other constant does not:

IS DISTINCT FROM and IS NOT DISTINCT FROM \

In SQL a NULL value signifies an unknown value, so any comparison involving a NULL will produce NULL. The IS DISTINCT FROM and IS NOT DISTINCT FROM operators treat NULL as a known value and both operators guarantee either a true or false outcome even in the presence of NULL input:
In the example shown above, a NULL value is not considered distinct from NULL. When you are comparing values which may include NULL use these operators to guarantee either a TRUE or FALSE result. The following truth table demonstrate the handling of NULL in IS DISTINCT FROM and IS NOT DISTINCT FROM:

GREATEST and LEAST

These functions are not in the SQL standard, but are a common extension. Like most other functions in Trino, they return null if any argument is null. Note that in some other databases, such as PostgreSQL, they only return null if all arguments are null. The following types are supported: DOUBLE, BIGINT, VARCHAR, TIMESTAMP, TIMESTAMP WITH TIME ZONE, DATE

greatest ()

greatest(value1, value2, ..., valueN) → [same as input] Returns the largest of the provided values.

least ()

least(value1, value2, ..., valueN) → [same as input] Returns the smallest of the provided values.

Quantified comparison predicates: ALL, ANY and SOME \

The ALL, ANY and SOME quantifiers can be used together with comparison operators in the following way:
For example:
Here are the meanings of some quantifier and comparison operator combinations: ANY and SOME have the same meaning and can be used interchangeably.

Pattern comparison: LIKE

The LIKE operator can be used to compare values with a pattern:
Matching characters is case sensitive, and the pattern supports two symbols for matching:
  • _ matches any single character
  • % matches zero or more characters
Typically it is often used as a condition in WHERE statements. An example is a query to find all continents starting with E, which returns Europe:
You can negate the result by adding NOT, and get all other continents, all not starting with E:
If you only have one specific character to match, you can use the _ symbol for each character. The following query uses two underscores and produces only Asia as result:
The wildcard characters _ and % must be escaped to allow you to match them as literals. This can be achieved by specifying the ESCAPE character to use:
The above query returns true since the escaped underscore symbol matches. If you need to match the used escape character as well, you can escape it. If you want to match for the chosen escape character, you simply escape itself. For example, you can use \\ to match for ''''.