SQL conditions
This article is about SQL conditions as part of the SQL syntax that USoft supports.
SQL conditions
SQL conditions are used:
- In WHERE and HAVING clauses in queries and subqueries.
- In ON clauses in join constructs.
Syntax
USoft supports all industry-standard SQL condition constructs. These syntax options are an integral part of the standard SQL language. There are no USoft extensions in this area.
*condition-list* ::= *condition logical-connector condition* ...
*condition* ::= { *operand comparison-operator operand* |
NOT( *operand comparison-operator operand* ) }
*operand* ::= { *column-expression* | *literal* }
*comparison-operator* ::= { *math-operator* | *sql-operator* }
*math-operator* ::= { = | != | > | >= | < | <= | <> }
*sql-operator* ::= {
{ LIKE | IN | EXISTS | BETWEEN } |
NOT { LIKE | IN | EXISTS | BETWEEN } |
IS NULL |
IS NOT NULL
}
*logical-connector* ::= { AND | OR }
The syntax of sql-operator constructs is not detailed above. These constructs are all different: LIKE calls for a wildcard pattern and has an optional ESCAPE clause, IN calls for an enumeration, EXISTS for a subquery, and BETWEEN for two column expressions connected by AND, while IS NULL is an operator for comparing a value with the NULL value. See SQL operators for details.
Example 1
This condition matches ARISTO products with an ID not higher than 6000 produced after February 1, 2022:
product_name = 'ARISTO'
AND product_id <= 6000
AND production_date > CHAR_TO_DATE( 'DD-MON-YYYY', '01-FEB-2022' )
Example 2
This condition matches ARISTO products except all ARISTO products from Australia and except all ARISTO products of type Consumer:
product_name = 'ARISTO'
AND NOT ( country = 'AUSTRALIA' OR type = 'CONSUMER' )
Example 3
This conditions matches all tours to Brazil that do not have a guide:
t.destination = 'BRAZIL'
AND NOT EXISTS (
SELECT ''
FROM person p
WHERE p.person_id = t.guide_id
)