BIT_OR 函数

bit_or([DISTINCT] expr) [FILTER (WHERE condition)]

功能描述

BIT_OR
BIT_OR
函数用于计算一组整数表达式的按位或(
bitwise OR
bitwise OR
)结果。该函数可以处理包括
TINYINT
TINYINT
SMALLINT
SMALLINT
INT
INT
BIGINT
BIGINT
在内的整数数据类型。通过使用该函数,用户可以对一组整数进行按位操作,从而得到一个新的整数值。

参数说明

  • expr
    expr
    :表示要进行按位或操作的整数表达式。要求参数类型为整数类型,包括
    TINYINT
    TINYINT
    SMALLINT
    SMALLINT
    INT
    INT
    BIGINT
    BIGINT
  • DISTINCT
    DISTINCT
    (可选):当设置为
    DISTINCT
    DISTINCT
    时,函数会计算去重后的集合的按位或结果。如果未设置
    DISTINCT
    DISTINCT
    ,则对所有表达式进行按位或操作,包括重复值。

返回结果

  • 返回值类型与参数类型一致,即整数类型(
    TINYINT
    TINYINT
    SMALLINT
    SMALLINT
    INT
    INT
    BIGINT
    BIGINT
    )。
  • 如果所有输入参数都为
    NULL
    NULL
    ,则返回
    NULL
    NULL
  • 对于未设置
    DISTINCT
    DISTINCT
    的情况,
    NULL
    NULL
    值不参与计算。
  • 对于设置
    DISTINCT
    DISTINCT
    的情况,
    NULL
    NULL
    值也不参与计算。

使用示例

  1. 计算一组数值的按位或结果(未设置
    DISTINCT
    DISTINCT
    ):

SELECT bit_or(col) FROM VALUES (3), (5), (7) AS tab(col); +-------------+ | bit_or(col) | +-------------+ | 7 | +-------------+

  1. 计算一组数值的去重后的按位或结果(设置
    DISTINCT
    DISTINCT
    ):

SELECT bit_or(DISTINCT col) FROM VALUES (3), (3), (5), (7), (NULL) AS tab(col); +----------------------+ | bit_or(DISTINCT col) | +----------------------+ | 7 | +----------------------+

  1. 计算含有
    NULL
    NULL
    值的数值的按位或结果(未设置
    DISTINCT
    DISTINCT
    ):

SELECT bit_or(col) FROM VALUES (3), (NULL), (7) AS tab(col); +-------------+ | bit_or(col) | +-------------+ | 7 | +-------------+

  1. 计算含有
    NULL
    NULL
    值的数值的去重后的按位或结果(设置
    DISTINCT
    DISTINCT
    ):

SELECT bit_or(DISTINCT col) FROM VALUES (3), (NULL), (7), (NULL) AS tab(col); +----------------------+ | bit_or(DISTINCT col) | +----------------------+ | 7 | +----------------------+

  1. 使用 FILTER 子句条件性地计算按位或:

SELECT bit_or(col) FILTER (WHERE col < 6) FROM VALUES (3), (5), (7) AS tab(col); +--------------------------------------+ | bit_or(col) FILTER (WHERE (col < 6)) | +--------------------------------------+ | 7 | +--------------------------------------+

联系我们
预约咨询
微信咨询
电话咨询