比较函数
所有数据类型都可用关系运算符进行比较,比较函数返回一个 BOOLEAN 类型的值。
注意事项
- 被比较的两个数据类型必须是相同的数据类型或者是可以进行转换的类型。
- double、real 和 float 值存在一定的精度差,因此在 Flink SQL 中不建议直接使用
=
对两个 double 或两个 float 类型的数据进行比较。
函数列表
函数 | 功能描述 |
---|---|
value1 = value2 | 若 value1 等于 value2,返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 说明 = 和 IS NOT DISTINCT FROM 的主要区别是对 NULL 值的处理方式不同。IS NULL 而不是 = NULL 来与 NULL 进行比较。 |
value1 <> value2 | 若 value1 不等于 value2,返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 |
value1 > value2 | 若 value1 大于 value2,返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 |
value1 >= value2 | 若 value1 大于或等于 value2,返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 |
value1 < value2 | 若 value1 小于 value2,返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 |
value1 <= value2 | 若 value1 小于或者等于 value2,则返回 TRUE,否则返回 FALSE。 若 value1 或 value2 为 NULL,则返回 UNKNOWN。 |
value1 IS NULL | 若 value1 为 NULL,返回 TRUE,否则返回 FALSE。 |
value1 IS NOT NULL | 若 value1 不为 NULL,返回 TRUE,否则返回 FALSE。 |
value1 IS DISTINCT FROM value2 | 若 value1 与 value2 不相等,返回 TRUE,否则返回 FALSE。NULL 视为相等。 例如: |
value1 IS NOT DISTINCT FROM value2 | 若 value1 与 value2 相等,返回 TRUE,否则返回 FALSE。NULL 视为相等。 例如: |
value1 BETWEEN [ASYMMETRIC | SYMMETRIC] value2 AND value3 | 若 value1 大于或等于 value2 且小于或等于 value3,返回 TRUE,否则返回 FALSE。当 value2 或 value3 为 NULL 时,返回 FALSE 或 UNKNOWN。 [ ]内为可选参数,默认为 ASYMMETRIC 。例如: |
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | 若 value1 小于 value2 或大于 value3,返回 TRUE,否则返回 FALSE。当 value2 或 value3 为 NULL 时,返回 TRUE 或 UNKNOWN。 [ ]内为可选参数,默认为 ASYMMETRIC 。例如: |
string1 LIKE string2 [ ESCAPE char ] | 若 value1 与模式 value2 匹配,返回 TRUE。 如果 string1 或 string2 为 NULL,则返回 UNKNOWN 。 必要时可以定义转义字符。 |
string1 NOT LIKE string2 [ ESCAPE char ] | 若 value1 与模式 value2 不匹配,返回TRUE。 如果 string1 或 string2 为 NULL,则返回 UNKNOWN 。 必要时可以定义转义字符。 |
string1 SIMILAR TO string2 [ ESCAPE char ] | 若 value1 与正则表达式 value2 匹配,返回TRUE。 如果 string1 或 string2 为 NULL,则返回 UNKNOWN 。 必要时可以定义转义字符。 |
string1 NOT SIMILAR TO string2 [ ESCAPE char ] | 若 value1 与正则表达式 value2 不匹配,返回TRUE。 如果 string1 或 string2 为 NULL,则返回 UNKNOWN 。 必要时可以定义转义字符。 |
value1 IN (value2 [, value3]*) | 若 value1 在列表中,返回 TRUE。 |
value1 NOT IN (value2 [, value3]* ) | 若 value1 不在列表中,返回 TRUE。 |
EXISTS (sub-query) | 若 sub-query 返回至少一行,则返回 TRUE,否则返回 FALSE。 该查询可能占用较多内存,请谨慎使用。 |
value IN (sub-query) | 若 sub-query 返回的结果中,有一条等于 value 的值,返回 TRUE,否则返回 FALSE。 该查询可能占用较多内存,请谨慎使用。 |
value NOT IN (sub-query) | 若 sub-query 返回的结果中,没有等于 value 的值,返回 TRUE,否则返回 FALSE。 该查询可能对内存压力较大,请谨慎使用。 |