Comparison Functions¶
Confluent Cloud for Apache Flink®️ provides these built-in comparison functions to use in SQL queries:
Equality operations¶
SQL function | Description |
---|---|
value1 = value2 |
Returns TRUE if value1 is equal to value2. Returns UNKNOWN if value1 or value2 is NULL. |
value1 <> value2 |
Returns TRUE if value1 is not equal to value2. Returns UNKNOWN if value1 or value2 is NULL. |
value1 > value2 |
Returns TRUE if value1 is greater than value2. Returns UNKNOWN if value1 or value2 is NULL. |
value1 >= value2 |
Returns TRUE if value1 is greater than or equal to value2. Returns UNKNOWN if value1 or value2 is NULL. |
value1 < value2 |
Returns TRUE if value1 is less than value2. Returns UNKNOWN if value1 or value2 is NULL. |
value1 <= value2 |
Returns TRUE if value1 is less than or equal to value2. Returns UNKNOWN if value1 or value2 is NULL. |
Logical operations¶
Logical operation | Description |
---|---|
boolean1 OR boolean2 |
Returns TRUE if boolean1 is TRUE or boolean2 is TRUE. Supports three-valued logic. For example, TRUE || NULL(BOOLEAN) returns TRUE. |
boolean1 AND boolean2 |
Returns TRUE if boolean1 and boolean2 are both TRUE. Supports three-valued logic. For example, TRUE && NULL(BOOLEAN) returns UNKNOWN. |
NOT boolean |
Returns TRUE if boolean is FALSE; returns FALSE if boolean is TRUE; returns UNKNOWN if boolean is UNKNOWN. |
boolean IS FALSE |
Returns TRUE if boolean is FALSE; returns FALSE if boolean is TRUE or UNKNOWN. |
boolean IS NOT FALSE |
Returns TRUE if boolean is TRUE or UNKNOWN; returns FALSE if boolean is FALSE. |
boolean IS TRUE |
Returns TRUE if boolean is TRUE; returns FALSE if boolean is FALSE or UNKNOWN. |
boolean IS NOT TRUE |
Returns TRUE if boolean is FALSE or UNKNOWN; returns FALSE if boolean is TRUE. |
boolean IS UNKNOWN |
Returns TRUE if boolean is UNKNOWN; returns FALSE if boolean is TRUE or FALSE. |
boolean IS NOT UNKNOWN |
Returns TRUE if boolean is TRUE or FALSE; returns FALSE if boolean is UNKNOWN. |
Comparison functions¶
- BETWEEN
- NOT BETWEEN
- EXISTS
- IN
- NOT IN
- IS DISTINCT FROM
- IS NOT DISTINCT FROM
- IS NULL
- IS NOT NULL
- LIKE
- NOT LIKE
- SIMILAR TO
- NOT SIMILAR TO
BETWEEN¶
Checks whether a value is between two other values.
- Syntax
value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3
- Description
The
BETWEEN
function returns TRUE ifvalue1
is greater than or equal tovalue2
and less than or equal tovalue3
, if ASYMMETRIC is specified. The default is ASYMMETRIC.If SYMMETRIC is specified, the
BETWEEN
function returns TRUE ifvalue1
is inclusively betweenvalue2
andvalue3
.When either
value2
orvalue3
is NULL, returns FALSE or UNKNOWN.- Examples
- returns FALSE SELECT 12 BETWEEN 15 AND 12; - returns TRUE SELECT 12 BETWEEN SYMMETRIC 15 AND 12; - returns UNKNOWN SELECT 12 BETWEEN 10 AND NULL; - returns FALSE SELECT 12 BETWEEN NULL AND 10; - returns UNKNOWN SELECT 12 BETWEEN SYMMETRIC NULL AND 12;
NOT BETWEEN¶
Checks whether a value is not between two other values.
- Syntax
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3
- Description
By default (or with the ASYMMETRIC keyword),
The
NOT BETWEEN
function returns TRUE ifvalue1
is less thanvalue2
or greater thanvalue3
, if ASYMMETRIC is specified.If SYMMETRIC is specified, The
NOT BETWEEN
function returns TRUE ifvalue1
is not inclusively betweenvalue2
andvalue3
.When either
value2
orvalue3
is NULL, returns TRUE or UNKNOWN.- Examples
-- returns TRUE SELECT 12 NOT BETWEEN 15 AND 12; -- returns FALSE SELECT 12 NOT BETWEEN SYMMETRIC 15 AND 12; -- returns UNKNOWN SELECT 12 NOT BETWEEN NULL AND 15; -- returns TRUE SELECT 12 NOT BETWEEN 15 AND NULL; -- returns UNKNOWN SELECT 12 NOT BETWEEN SYMMETRIC 12 AND NULL;
EXISTS¶
Check whether a query returns a row.
- Syntax
EXISTS (sub-query)
- Description
The
EXISTS
function returns TRUE ifsub-query
returns at least one row.The
EXISTS
function is supported only if the operation can be rewritten in a join and group operation.For streaming queries, the operation is rewritten in a join and group operation.
The required state to compute the query result might grow indefinitely, depending on the number of distinct input rows. Provide a query configuration with valid retention interval to prevent excessive state size.
- Examples
SELECT user_id, item_id FROM user_behavior WHERE EXISTS ( SELECT * FROM category WHERE category.item_id = user_behavior.item_id AND category.name = 'book' );
IN¶
Checks whether a value exists in a list.
- Syntax
value1 IN (value2 [, value3]* ) value IN (sub-query)
- Description
The
IN
function returns TRUE ifvalue1
exists in the specified list(value2, value3, ...)
.If a subquery is specified, The
IN
function returns TRUE ifvalue
is equal to a row returned bysub-query
.When
(value2, value3, ...)
contains NULL, TheIN
function returns TRUE if the element can be found and UNKNOWN otherwise.Always returns UNKNOWN if
value1
is NULL.- Examples
-- returns FALSE SELECT 4 IN (1, 2, 3); -- returns TRUE SELECT 1 IN (1, 2, NULL); -- returns UNKNOWN SELECT 4 IN (1, 2, NULL);
NOT IN¶
Checks whether a value doesn’t exist in a list.
- Syntax
value1 NOT IN (value2 [, value3]* ) value NOT IN (sub-query)
- Description
The
NOT IN
function returns TRUE ifvalue1
does not exist in the specified list(value2, value3, ...)
.If a subquery is specified, The
NOT IN
function returns TRUE ifvalue
isn’t equal to a row returned bysub-query
.When
(value2, value3, ...)
contains NULL, theNOT IN
function returns FALSE ifvalue1
can be found and UNKNOWN otherwise.Always returns UNKNOWN if value1 is NULL.
- Examples
-- returns TRUE SELECT 4 NOT IN (1, 2, 3); -- returns FALSE SELECT 1 NOT IN (1, 2, NULL); -- returns UNKNOWN SELECT 4 NOT IN (1, 2, NULL);
IS DISTINCT FROM¶
Checks whether two values are different.
- Syntax
value1 IS DISTINCT FROM value2
- Description
The
IS DISTINCT FROM
function returns TRUE if two values are different.NULL values are treated as identical.
- Examples
-- returns TRUE SELECT 1 IS DISTINCT FROM 2; -- returns TRUE SELECT 1 IS DISTINCT FROM NULL; -- returns FALSE SELECT NULL IS DISTINCT FROM NULL;
IS NOT DISTINCT FROM¶
Checks whether two values are equal.
- Syntax
value1 IS NOT DISTINCT FROM value2
- Description
The
IS NOT DISTINCT FROM
function returns TRUE if two values are equal.NULL values are treated as identical.
- Examples
-- returns FALSE SELECT 1 IS NOT DISTINCT FROM 2; -- returns FALSE SELECT 1 IS NOT DISTINCT FROM NULL; -- returns TRUE SELECT NULL IS NOT DISTINCT FROM NULL;
IS NULL¶
Checks whether a value is NULL.
- Syntax
value IS NULL
- Description
- The
IS NULL
function returns TRUE ifvalue
is NULL. - Examples
-- returns FALSE SELECT 1 IS NULL; -- returns TRUE SELECT NULL IS NULL;
IS NOT NULL¶
Checks whether a value is assigned.
- Syntax
value IS NOT NULL
- Description
- The
IS NOT NULL
function returns TRUE ifvalue
is not NULL. - Examples
-- returns TRUE SELECT 1 IS NOT NULL; -- returns FALSE SELECT NULL IS NOT NULL;
LIKE¶
Checks whether a string matches a pattern.
- Syntax
string1 LIKE string2
- Description
The
LIKE
function returns TRUE ifstring1
matches the pattern specified bystring2
.The pattern can contain these special characters:
- % – matches any number of characters
- _ – matches a single character
Returns UNKNOWN if either
string1
orstring2
is NULL.
- Examples
-- returns TRUE SELECT 'book-23' LIKE 'book-%'; -- returns FALSE SELECT 'book23' LIKE 'book_'; -- returns TRUE SELECT 'book2' LIKE 'book_';
NOT LIKE¶
Checks whether a string matches a pattern.
- Syntax
string1 NOT LIKE string2 [ ESCAPE char ]
- Description
The
NOT LIKE
function returns TRUE ifstring1
does not match the pattern specified bystring2
.The pattern can contain these special characters:
- % – matches any number of characters
- _ – matches a single character
Returns UNKNOWN if
string1
orstring2
is NULL.
- Examples
-- returns FALSE SELECT 'book-23' NOT LIKE 'book-%'; -- returns TRUE SELECT 'book23' NOT LIKE 'book_'; -- returns FALSE SELECT 'book2' NOT LIKE 'book_';
SIMILAR TO¶
Checks whether a string matches a regular expression.
- Syntax
string1 SIMILAR TO string2
- Description
The
SIMILAR TO
function returns TRUE ifstring1
matches the SQL regular expression instring2
.The pattern can contain any characters that are valid in regular expressions, like
.
, which matches any character,*
, which matches zero or more occurrences, and+
which matches one or more occurrences.Returns UNKNOWN if
string1
orstring2
is NULL.
- Examples
-- returns TRUE SELECT 'book-523' SIMILAR TO 'book-[0-9]+'; -- returns TRUE SELECT 'bob.dobbs@example.com' SIMILAR TO '%@example.com';
NOT SIMILAR TO¶
Checks whether a string doesn’t match a regular expression.
- Syntax
string1 NOT SIMILAR TO string2 [ ESCAPE char ]
- Description
The
NOT SIMILAR TO
function returns TRUE ifstring1
does not match the SQL regular expression specified bystring2
.Returns UNKNOWN if
string1
orstring2
is NULL.
- Examples
-- returns TRUE SELECT 'book-nan' NOT SIMILAR TO 'book-[0-9]+'; -- returns TRUE SELECT 'bob.dobbs@company.com' NOT SIMILAR TO '%@example.com';
Conversion functions¶
CAST¶
Casts a value to a different type.
- Syntax
CAST(value AS type)
- Description
The
CAST
function returns the specified value cast to the type specified bytype
.A cast error throws an exception and fails the job.
When performing a cast operation that may fail, like STRING to INT, prefer TRY_CAST, to enable handling errors.
If
table.exec.legacy-cast-behaviour
is enabled, theCAST
function behaves likeTRY_CAST
.- Examples
-- returns 42 SELECT CAST('42' AS INT); -- returns NULL of type STRING SELECT CAST(NULL AS STRING); -- throws an exception and fails the job SELECT CAST('not-a-number' AS INT);
TRY_CAST¶
Casts a value to a different type and returns NULL on error.
- Syntax
TRY_CAST(value AS type)
- Description
- Similar to the CAST function, but in case of error, returns NULL rather than failing the job.
- Examples
-- returns 42 SELECT TRY_CAST('42' AS INT); -- returns NULL of type STRING SELECT TRY_CAST(NULL AS STRING); -- returns NULL of type INT SELECT TRY_CAST('not-a-number' AS INT); -- returns 0 of type INT SELECT COALESCE(TRY_CAST('not-a-number' AS INT), 0);
TYPEOF¶
Gets the string representation of a data type.
- Syntax
TYPEOF(input) TYPEOF(input, force_serializable)
- Description
The
TYPEOF
function returns the string representation of the input expression’s data type.By default, the returned string is a summary string that might omit certain details for readability.
If
force_serializable
is set to TRUE, the string represents a full data type that can be persisted in a catalog.Anonymous, inline data types have no serializable string representation. In these cases, NULL is returned.
- Examples
-- returns "CHAR(13) NOT NULL" SELECT TYPEOF('a string type'); -- returns "INT NOT NULL" SELECT TYPEOF(23); -- returns "DATE NOT NULL" SELECT TYPEOF(DATE '2023-05-04'); -- returns "NULL" SELECT TYPEOF(NULL);
Other built-in functions¶
- Aggregate Functions
- Collection Functions
- Comparison functions
- Conditional Functions
- Datetime Functions
- Hash Functions
- JSON Functions
- Numeric Functions
- String Functions
Important
Confluent Cloud for Apache Flink®️ is currently available for Preview. A Preview feature is a Confluent Cloud component that is being introduced to gain early feedback from developers. Preview features can be used for evaluation and non-production testing purposes or to provide feedback to Confluent. The warranty, SLA, and Support Services provisions of your agreement with Confluent do not apply to Preview features. Confluent may discontinue providing Preview releases of the Preview features at any time in Confluent’s sole discretion. Check out Getting Help for questions, feedback and requests.
For SQL features and limitations in the preview program, see Notable Limitations in Public Preview.