Skip to content

|(按位或)

功能描述

将两个操作数做按位或计算。

数据类型

L_OPERAND_TYP(左操作数类型)R_OPERAND_TYP(右操作数类型)RET_TYPE(返回类型)
VARBITVARBITVARBIT
BIGINTBIGINTBIGINT

示例

  • 示例1
    对二进制字符串101和1011进行按位与或运算。

    sql
    -- VARBIT类型
    SQL> SELECT b'101' | b'1011';
    
    EXPR1 |
    ----------------------------------------------------------------
    1111 |

    说明:

    当两个操作数为VARBIT类型且位数不等时,对较短的操作数左侧补零,再执行计算。

  • 示例2
    对BITINT类型数据进行按位与运算。

    sql
    -- BIGINT类型
    SQL> SELECT 9223372036854775800 | 9223372036854775705;
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    9223372036854775801 |
  • 示例3
    隐式转换,支持的数据类型包括:TINYINT、SMALLINT、INT、FLOAT、DOUBLE、STR、NUMERIC。

    sql
    -- 字符串'1'隐式转换为整数1,然后执行按位或运算
    SQL> SELECT '1' | 2;
    
    EXPR1 |
    ----------------------------------------------------------------
    3 |
    
    -- 浮点数1.5隐式转换为整数2,然后执行按位或运算
    SQL> SELECT 1.5 | 2;
    
    EXPR1 |
    ----------------------------------------------------------------
    2 |
    
    -- 更多类型转换示例
    SQL> CREATE TABLE tab_tt(c1 TINYINT, c2 SMALLINT, c3 INT, c4 FLOAT, c5 DOUBLE, c6 VARCHAR, c7 NUMERIC);
    
    SQL> INSERT INTO tab_tt VALUES(1, 2, 3, 4.3, 5.6, '4', 1.5);
    
    SQL> SELECT c1 | c1, c2 | c2, c3 | c3, c4 | c4, c5 | c5, c6 | c6, c7 | c7 FROM tab_tt;
    
    EXPR1 | EXPR2 | EXPR3 | EXPR4 | EXPR5 | EXPR6 | EXPR7 | 
    ------------------------------------------------------------------------------
    1 | 2 | 3 | 4 | 6 | 4 | 2 |

    说明:

    BIGINT类型的按位或运算支持隐式转换成BIGINT类型运算。