Class SqlLibraryOperators
They are read by SqlLibraryOperatorTableFactory
into instances
of SqlOperatorTable
that contain functions and operators for
particular libraries.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final SqlFunction
The "AGGREGATE(m)" aggregate function; aggregates a measure column according to the measure's rollup strategy.static final SqlAggFunction
The "ARRAY_AGG(value [ ORDER BY ...])" aggregate function, in BigQuery and PostgreSQL, gathers values into arrays.static final SqlFunction
The "ARRAY_CONCAT(array [, array]*)" function.static final SqlAggFunction
The "ARRAY_CONCAT_AGG(value [ ORDER BY ...])" aggregate function, in BigQuery and PostgreSQL, concatenates array values into arrays.static final SqlFunction
The "ARRAY_LENGTH(array)" function.static final SqlFunction
The "ARRAY_REVERSE(array)" function.static final SqlAggFunction
The "BOOL_AND(condition)" aggregate function, PostgreSQL and Redshift's equivalent toSqlStdOperatorTable.EVERY
.static final SqlAggFunction
The "BOOL_OR(condition)" aggregate function, PostgreSQL and Redshift's equivalent toSqlStdOperatorTable.SOME
.static final SqlFunction
The "CHAR(n)" function; returns the character whose ASCII code isn
% 256, or null ifn
< 0.static final SqlFunction
The "CHR(n)" function; returns the character whose UTF-8 code isn
.static final SqlFunction
static final SqlFunction
The "CONCAT(arg, ...)" function that concatenates strings.static final SqlFunction
The "CONCAT(arg0, arg1)" function that concatenates strings.static final SqlFunction
The "CONVERT_TIMEZONE(tz1, tz2, datetime)" function; converts the timezone ofdatetime
fromtz1
totz2
.static final SqlFunction
static final SqlAggFunction
The "COUNTIF(condition) [OVER (...)]" function, in BigQuery, returns the count of TRUE values for expression.static final SqlFunction
The "CURRENT_DATETIME([timezone])" function.static final SqlFunction
The "DATE" function.static final SqlFunction
THE "DATE_ADD(date, interval)" function (BigQuery) adds the interval to the date.static final SqlFunction
THE "DATE_DIFF(date, date2, timeUnit)" function (BigQuery) returns the number of timeUnit in (date - date2).static final SqlFunction
The "DATE_FROM_UNIX_DATE(integer)" function; returns a DATE value a given number of seconds after 1970-01-01.static final SqlFunction
The "DATE_PART(timeUnit, datetime)" function (Databricks, Postgres, Redshift, Snowflake).static final SqlFunction
The "DATE_SUB(date, interval)" function (BigQuery); subtracts interval from the date, independent of any time zone.static final SqlFunction
The "DATE_TRUNC(date, timeUnit)" function (BigQuery); truncates a DATE value to the beginning of a timeUnit.static final SqlFunction
The "DATEADD(timeUnit, numeric, datetime)" function (Microsoft SQL Server, Redshift, Snowflake).static final SqlFunction
The "DATEDIFF(timeUnit, datetime, datetime2)" function (Microsoft SQL Server, Redshift, Snowflake).static final SqlFunction
The "DATEPART(timeUnit, datetime)" function (Microsoft SQL Server).static final SqlFunction
The "DATETIME" function returns a CalciteTIMESTAMP
(which BigQuery calls aDATETIME
).static final SqlFunction
The "DATETIME_ADD(timestamp, interval)" function (BigQuery).static final SqlFunction
The "DATETIME_DIFF(timestamp, timestamp2, timeUnit)" function (BigQuery).static final SqlFunction
BigQuery'sDATETIME_SUB(timestamp, interval)
function is a synonym for TIMESTAMP_SUB because in Calcite, DATETIME is an alias for TIMESTAMP.static final SqlFunction
The "DAYNAME(datetime)" function; returns the name of the day of the week, in the current locale, of a TIMESTAMP or DATE argument.static final SqlFunction
The "DECODE(v, v1, result1, [v2, result2, ...], resultN)" function.static final SqlFunction
static final SqlFunction
The "ENDS_WITH(value1, value2)" function (BigQuery).static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
The "FORMAT_DATE(string, date)" function (BigQuery); Formats a date object according to the specified string.static final SqlFunction
The "FORMAT_DATETIME(string, timestamp)" function (BigQuery); Formats a timestamp object according to the specified string.static final SqlFunction
The "FORMAT_TIME(string, time)" function (BigQuery); Formats a time object according to the specified string.static final SqlFunction
The "FORMAT_TIMESTAMP(string, timestamp)" function (BigQuery); Formats a timestamp object according to the specified string.static final SqlFunction
static final SqlFunction
The "GREATEST(value, value)" function.static final SqlAggFunction
The "GROUP_CONCAT([DISTINCT] expr [, ...] [ORDER BY ...] [SEPARATOR sep])" aggregate function, MySQL's equivalent ofSqlStdOperatorTable.LISTAGG
.static final SqlFunction
The "IF(condition, thenValue, elseValue)" function.static final SqlFunction
The "IFNULL(value, value)" function.static final SqlSpecialOperator
The case-insensitive variant of the LIKE operator.static final SqlOperator
Infix "::" cast operator used by PostgreSQL, for example'100'::INTEGER
.static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
The "LEAST(value, value)" function.static final SqlFunction
static final SqlFunction
The "LENGTH(string)" function.static final SqlAggFunction
The "LOGICAL_AND(condition)" aggregate function, BigQuery's equivalent toSqlStdOperatorTable.EVERY
.static final SqlAggFunction
The "LOGICAL_OR(condition)" aggregate function, BigQuery's equivalent toSqlStdOperatorTable.SOME
.static final SqlFunction
The "LPAD(original_value, return_length[, pattern])" function.static final SqlFunction
The "LTRIM(string)" function.static final SqlAggFunction
The "MAX_BY(value, comp)" aggregate function, Spark's equivalent toSqlStdOperatorTable.ARG_MAX
.static final SqlFunction
static final SqlAggFunction
The "MIN_BY(condition)" aggregate function, Spark's equivalent toSqlStdOperatorTable.ARG_MIN
.static final SqlFunction
The "MONTHNAME(datetime)" function; returns the name of the month, in the current locale, of a TIMESTAMP or DATE argument.static final SqlSpecialOperator
The case-insensitive variant of the NOT LIKE operator.static final SqlSpecialOperator
The regex variant of the NOT LIKE operator.static final SqlOperator
NULL-safe "<=>" equal operator used by MySQL, for example1<=>NULL
.static final SqlBasicFunction
The "NVL(value, value)" function.static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlSpecialOperator
The regex variant of the LIKE operator.static final SqlFunction
The "RPAD(original_value, return_length[, pattern])" function.static final SqlFunction
The "RTRIM(string)" function.static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
static final SqlFunction
The "STARTS_WITH(value1, value2)" function (BigQuery).static final SqlFunction
static final SqlAggFunction
The "STRING_AGG(value [, separator ] [ ORDER BY ...])" aggregate function, BigQuery and PostgreSQL's equivalent ofSqlStdOperatorTable.LISTAGG
.static final SqlFunction
BigQuery's "SUBSTR(string, position [, substringLength ])" function.static final SqlFunction
MySQL's "SUBSTR(string, position [, substringLength ])" function.static final SqlFunction
Oracle's "SUBSTR(string, position [, substringLength ])" function.static final SqlFunction
PostgreSQL's "SUBSTR(string, position [, substringLength ])" function.static final SqlFunction
static final SqlFunction
The "TIME" function.static final SqlFunction
The "TIME_ADD(time, interval)" function (BigQuery); adds interval expression to the specified time expression.static final SqlFunction
The "TIME_DIFF(time, time, timeUnit)" function (BigQuery); returns the number of timeUnit between the two time expressions.static final SqlFunction
The "TIME_SUB(time, interval)" function (BigQuery); subtracts an interval from a time, independent of any time zone.static final SqlFunction
The "TIME_TRUNC(time, timeUnit)" function (BigQuery); truncates a TIME value to the beginning of a timeUnit.static final SqlFunction
The "TIMESTAMP" function returns a CalciteTIMESTAMP WITH LOCAL TIME ZONE
(which BigQuery calls aTIMESTAMP
).static final SqlBasicFunction
The "TIMESTAMP_ADD(timestamp, interval)" function (BigQuery), the two-argument variant of the built-inTIMESTAMPADD
function, which has three arguments.static final SqlFunction
The "TIMESTAMP_DIFF(timestamp, timestamp, timeUnit)" function (BigQuery); returns the number of timeUnit between the two timestamp expressions.static final SqlFunction
The "TIMESTAMP_MICROS(bigint)" function; returns a TIMESTAMP value a given number of micro-seconds after 1970-01-01 00:00:00.static final SqlFunction
The "TIMESTAMP_MILLIS(bigint)" function; returns a TIMESTAMP value a given number of milliseconds after 1970-01-01 00:00:00.static final SqlFunction
The "TIMESTAMP_SECONDS(bigint)" function; returns a TIMESTAMP value a given number of seconds after 1970-01-01 00:00:00.static final SqlBasicFunction
The "TIMESTAMP_SUB(timestamp, interval)" function (BigQuery); subtracts an interval from a timestamp, independent of any time zone.static final SqlFunction
The "TIMESTAMP_TRUNC(timestamp, timeUnit[, timeZone])" function (BigQuery); truncates a TIMESTAMP value to the beginning of a timeUnit.static final SqlFunction
static final SqlFunction
The "TO_DATE(string1, string2)" function; casts string1 to a DATE using the format specified in string2.static final SqlFunction
The "TO_TIMESTAMP(string1, string2)" function; casts string1 to a TIMESTAMP using the format specified in string2.static final SqlFunction
TheTRANSLATE(string_expr, search_chars, replacement_chars)
function returns string_expr with all occurrences of each character in search_chars replaced by its corresponding character in replacement_chars.static final SqlFunction
static final SqlFunction
The "UNIX_DATE(date)" function; returns the number of days since 1970-01-01.static final SqlFunction
The "UNIX_MICROS(bigint)" function; returns the number of microseconds since 1970-01-01 00:00:00.static final SqlFunction
The "UNIX_MILLIS(bigint)" function; returns the number of milliseconds since 1970-01-01 00:00:00.static final SqlFunction
The "UNIX_SECONDS(bigint)" function; returns the number of seconds since 1970-01-01 00:00:00.static final SqlFunction
-
Method Summary
-
Field Details
-
AGGREGATE
The "AGGREGATE(m)" aggregate function; aggregates a measure column according to the measure's rollup strategy. This is a Calcite-specific extension.This operator is for SQL (and AST); for internal use (RexNode and Aggregate) use
AGG_M2M
. -
CONVERT_TIMEZONE
The "CONVERT_TIMEZONE(tz1, tz2, datetime)" function; converts the timezone ofdatetime
fromtz1
totz2
. This function is only on Redshift, but we list it in PostgreSQL because Redshift does not have its own library. -
DATE_ADD
THE "DATE_ADD(date, interval)" function (BigQuery) adds the interval to the date. -
DATE_DIFF
THE "DATE_DIFF(date, date2, timeUnit)" function (BigQuery) returns the number of timeUnit in (date - date2). -
DATEADD
The "DATEADD(timeUnit, numeric, datetime)" function (Microsoft SQL Server, Redshift, Snowflake). -
DATEDIFF
The "DATEDIFF(timeUnit, datetime, datetime2)" function (Microsoft SQL Server, Redshift, Snowflake).MySQL has "DATEDIFF(date, date2)" and "TIMEDIFF(time, time2)" functions but Calcite does not implement these because they have no "timeUnit" argument.
-
DATE_PART
The "DATE_PART(timeUnit, datetime)" function (Databricks, Postgres, Redshift, Snowflake). -
DATE_SUB
The "DATE_SUB(date, interval)" function (BigQuery); subtracts interval from the date, independent of any time zone. -
DATEPART
The "DATEPART(timeUnit, datetime)" function (Microsoft SQL Server). -
DECODE
The "DECODE(v, v1, result1, [v2, result2, ...], resultN)" function. -
IF
The "IF(condition, thenValue, elseValue)" function. -
NVL
The "NVL(value, value)" function. -
IFNULL
The "IFNULL(value, value)" function. -
LENGTH
The "LENGTH(string)" function. -
LPAD
The "LPAD(original_value, return_length[, pattern])" function. -
RPAD
The "RPAD(original_value, return_length[, pattern])" function. -
LTRIM
The "LTRIM(string)" function. -
RTRIM
The "RTRIM(string)" function. -
ENDS_WITH
The "ENDS_WITH(value1, value2)" function (BigQuery). -
STARTS_WITH
The "STARTS_WITH(value1, value2)" function (BigQuery). -
SUBSTR_BIG_QUERY
BigQuery's "SUBSTR(string, position [, substringLength ])" function. -
SUBSTR_MYSQL
MySQL's "SUBSTR(string, position [, substringLength ])" function. -
SUBSTR_ORACLE
Oracle's "SUBSTR(string, position [, substringLength ])" function.It has different semantics to standard SQL's
SqlStdOperatorTable.SUBSTRING
function:- If
substringLength
≤ 0, result is the empty string (Oracle would return null, because it treats the empty string as null, but Calcite does not have these semantics); - If
position
= 0, treatposition
as 1; - If
position
< 0, treatposition
as "length(string) + position + 1".
- If
-
SUBSTR_POSTGRESQL
PostgreSQL's "SUBSTR(string, position [, substringLength ])" function. -
GREATEST
The "GREATEST(value, value)" function. -
LEAST
The "LEAST(value, value)" function. -
TRANSLATE3
TheTRANSLATE(string_expr, search_chars, replacement_chars)
function returns string_expr with all occurrences of each character in search_chars replaced by its corresponding character in replacement_chars.It is not defined in the SQL standard, but occurs in Oracle and PostgreSQL.
-
JSON_TYPE
-
JSON_DEPTH
-
JSON_LENGTH
-
JSON_KEYS
-
JSON_PRETTY
-
JSON_REMOVE
-
JSON_STORAGE_SIZE
-
JSON_INSERT
-
JSON_REPLACE
-
JSON_SET
-
REGEXP_REPLACE
-
COMPRESS
-
EXTRACT_VALUE
-
XML_TRANSFORM
-
EXTRACT_XML
-
EXISTS_NODE
-
BOOL_AND
The "BOOL_AND(condition)" aggregate function, PostgreSQL and Redshift's equivalent toSqlStdOperatorTable.EVERY
. -
BOOL_OR
The "BOOL_OR(condition)" aggregate function, PostgreSQL and Redshift's equivalent toSqlStdOperatorTable.SOME
. -
LOGICAL_AND
The "LOGICAL_AND(condition)" aggregate function, BigQuery's equivalent toSqlStdOperatorTable.EVERY
. -
LOGICAL_OR
The "LOGICAL_OR(condition)" aggregate function, BigQuery's equivalent toSqlStdOperatorTable.SOME
. -
COUNTIF
The "COUNTIF(condition) [OVER (...)]" function, in BigQuery, returns the count of TRUE values for expression.COUNTIF(b)
is equivalent toCOUNT(*) FILTER (WHERE b)
. -
ARRAY_AGG
The "ARRAY_AGG(value [ ORDER BY ...])" aggregate function, in BigQuery and PostgreSQL, gathers values into arrays. -
ARRAY_CONCAT_AGG
The "ARRAY_CONCAT_AGG(value [ ORDER BY ...])" aggregate function, in BigQuery and PostgreSQL, concatenates array values into arrays. -
STRING_AGG
The "STRING_AGG(value [, separator ] [ ORDER BY ...])" aggregate function, BigQuery and PostgreSQL's equivalent ofSqlStdOperatorTable.LISTAGG
.STRING_AGG(v, sep ORDER BY x, y)
is implemented by rewriting toLISTAGG(v, sep) WITHIN GROUP (ORDER BY x, y)
. -
GROUP_CONCAT
The "GROUP_CONCAT([DISTINCT] expr [, ...] [ORDER BY ...] [SEPARATOR sep])" aggregate function, MySQL's equivalent ofSqlStdOperatorTable.LISTAGG
.GROUP_CONCAT(v ORDER BY x, y SEPARATOR s)
is implemented by rewriting toLISTAGG(v, s) WITHIN GROUP (ORDER BY x, y)
. -
MAX_BY
The "MAX_BY(value, comp)" aggregate function, Spark's equivalent toSqlStdOperatorTable.ARG_MAX
. -
MIN_BY
The "MIN_BY(condition)" aggregate function, Spark's equivalent toSqlStdOperatorTable.ARG_MIN
. -
DATE
The "DATE" function. It has the following overloads:DATE(string)
is syntactic sugar forCAST(string AS DATE)
DATE(year, month, day)
DATE(timestampLtz [, timeZone])
DATE(timestamp)
-
DATETIME
The "DATETIME" function returns a CalciteTIMESTAMP
(which BigQuery calls aDATETIME
). It has the following overloads:DATETIME(year, month, day, hour, minute, second)
DATETIME(date[, time])
DATETIME(timestampLtz[, timeZone])
-
TIME
The "TIME" function. It has the following overloads:TIME(hour, minute, second)
TIME(timestampLtz [, timeZone])
TIME(timestamp)
-
TIMESTAMP
The "TIMESTAMP" function returns a CalciteTIMESTAMP WITH LOCAL TIME ZONE
(which BigQuery calls aTIMESTAMP
). It has the following overloads:TIMESTAMP(string[, timeZone])
TIMESTAMP(date[, timeZone])
TIMESTAMP(timestamp[, timeZone])
-
CURRENT_DATETIME
The "CURRENT_DATETIME([timezone])" function. -
DATE_FROM_UNIX_DATE
The "DATE_FROM_UNIX_DATE(integer)" function; returns a DATE value a given number of seconds after 1970-01-01. -
UNIX_DATE
The "UNIX_DATE(date)" function; returns the number of days since 1970-01-01. -
MONTHNAME
The "MONTHNAME(datetime)" function; returns the name of the month, in the current locale, of a TIMESTAMP or DATE argument. -
DAYNAME
The "DAYNAME(datetime)" function; returns the name of the day of the week, in the current locale, of a TIMESTAMP or DATE argument. -
LEFT
-
REPEAT
-
RIGHT
-
SPACE
-
STRCMP
-
SOUNDEX
-
DIFFERENCE
-
ILIKE
The case-insensitive variant of the LIKE operator. -
NOT_ILIKE
The case-insensitive variant of the NOT LIKE operator. -
RLIKE
The regex variant of the LIKE operator. -
NOT_RLIKE
The regex variant of the NOT LIKE operator. -
CONCAT_FUNCTION
The "CONCAT(arg, ...)" function that concatenates strings. For example, "CONCAT('a', 'bc', 'd')" returns "abcd". -
CONCAT2
The "CONCAT(arg0, arg1)" function that concatenates strings. For example, "CONCAT('a', 'bc')" returns "abc".It is assigned
SqlKind.CONCAT2
to make it not equal toCONCAT_FUNCTION
. -
ARRAY_LENGTH
The "ARRAY_LENGTH(array)" function. -
ARRAY_REVERSE
The "ARRAY_REVERSE(array)" function. -
ARRAY_CONCAT
The "ARRAY_CONCAT(array [, array]*)" function. -
REVERSE
-
FROM_BASE64
-
TO_BASE64
-
TO_DATE
The "TO_DATE(string1, string2)" function; casts string1 to a DATE using the format specified in string2. -
TO_TIMESTAMP
The "TO_TIMESTAMP(string1, string2)" function; casts string1 to a TIMESTAMP using the format specified in string2. -
FORMAT_TIME
The "FORMAT_TIME(string, time)" function (BigQuery); Formats a time object according to the specified string. -
FORMAT_DATE
The "FORMAT_DATE(string, date)" function (BigQuery); Formats a date object according to the specified string. -
FORMAT_TIMESTAMP
The "FORMAT_TIMESTAMP(string, timestamp)" function (BigQuery); Formats a timestamp object according to the specified string.In BigQuery, the "TIMESTAMP" datatype maps to Calcite's TIMESTAMP_WITH_LOCAL_TIME_ZONE
-
FORMAT_DATETIME
The "FORMAT_DATETIME(string, timestamp)" function (BigQuery); Formats a timestamp object according to the specified string. -
TIMESTAMP_ADD2
The "TIMESTAMP_ADD(timestamp, interval)" function (BigQuery), the two-argument variant of the built-inTIMESTAMPADD
function, which has three arguments.In BigQuery, the syntax is "TIMESTAMP_ADD(timestamp, INTERVAL int64_expression date_part)" but in Calcite the second argument can be any interval expression, not just an interval literal.
-
TIMESTAMP_DIFF3
The "TIMESTAMP_DIFF(timestamp, timestamp, timeUnit)" function (BigQuery); returns the number of timeUnit between the two timestamp expressions.TIMESTAMP_DIFF(t1, t2, unit)
is equivalent toTIMESTAMPDIFF(unit, t2, t1)
and(t1 - t2) unit
. -
TIME_ADD
The "TIME_ADD(time, interval)" function (BigQuery); adds interval expression to the specified time expression. -
TIME_DIFF
The "TIME_DIFF(time, time, timeUnit)" function (BigQuery); returns the number of timeUnit between the two time expressions. -
DATE_TRUNC
The "DATE_TRUNC(date, timeUnit)" function (BigQuery); truncates a DATE value to the beginning of a timeUnit. -
TIME_SUB
The "TIME_SUB(time, interval)" function (BigQuery); subtracts an interval from a time, independent of any time zone.In BigQuery, the syntax is "TIME_SUB(time, INTERVAL int64 date_part)" but in Calcite the second argument can be any interval expression, not just an interval literal.
-
TIME_TRUNC
The "TIME_TRUNC(time, timeUnit)" function (BigQuery); truncates a TIME value to the beginning of a timeUnit. -
TIMESTAMP_SUB
The "TIMESTAMP_SUB(timestamp, interval)" function (BigQuery); subtracts an interval from a timestamp, independent of any time zone.In BigQuery, the syntax is "TIMESTAMP_SUB(timestamp, INTERVAL int64 date_part)" but in Calcite the second argument can be any interval expression, not just an interval literal.
-
DATETIME_SUB
BigQuery'sDATETIME_SUB(timestamp, interval)
function is a synonym for TIMESTAMP_SUB because in Calcite, DATETIME is an alias for TIMESTAMP. -
TIMESTAMP_TRUNC
The "TIMESTAMP_TRUNC(timestamp, timeUnit[, timeZone])" function (BigQuery); truncates a TIMESTAMP value to the beginning of a timeUnit. -
TIMESTAMP_SECONDS
The "TIMESTAMP_SECONDS(bigint)" function; returns a TIMESTAMP value a given number of seconds after 1970-01-01 00:00:00. -
TIMESTAMP_MILLIS
The "TIMESTAMP_MILLIS(bigint)" function; returns a TIMESTAMP value a given number of milliseconds after 1970-01-01 00:00:00. -
TIMESTAMP_MICROS
The "TIMESTAMP_MICROS(bigint)" function; returns a TIMESTAMP value a given number of micro-seconds after 1970-01-01 00:00:00. -
UNIX_SECONDS
The "UNIX_SECONDS(bigint)" function; returns the number of seconds since 1970-01-01 00:00:00. -
UNIX_MILLIS
The "UNIX_MILLIS(bigint)" function; returns the number of milliseconds since 1970-01-01 00:00:00. -
UNIX_MICROS
The "UNIX_MICROS(bigint)" function; returns the number of microseconds since 1970-01-01 00:00:00. -
DATETIME_ADD
The "DATETIME_ADD(timestamp, interval)" function (BigQuery). AsTIMESTAMP_ADD
, returns a CalciteTIMESTAMP
(which BigQuery calls aDATETIME
). -
DATETIME_DIFF
The "DATETIME_DIFF(timestamp, timestamp2, timeUnit)" function (BigQuery). -
CHAR
The "CHAR(n)" function; returns the character whose ASCII code isn
% 256, or null ifn
< 0. -
CHR
The "CHR(n)" function; returns the character whose UTF-8 code isn
. -
TANH
-
COSH
-
SINH
-
MD5
-
SHA1
-
POW
-
TRUNC
-
INFIX_CAST
Infix "::" cast operator used by PostgreSQL, for example'100'::INTEGER
. -
NULL_SAFE_EQUAL
NULL-safe "<=>" equal operator used by MySQL, for example1<=>NULL
.
-