^(按位异或)
功能描述
将两个操作数做按位异或计算。
数据类型
L_OPERAND_TYP(左操作数类型) | R_OPERAND_TYP(右操作数类型) | RET_TYPE(返回类型) |
---|---|---|
VARBIT | VARBIT | VARBIT |
BIGINT | BIGINT | BIGINT |
示例
示例1
对二进制字符串101和1011进行按位异或运算。sql-- VARBIT类型 SQL> SELECT b'101' & b'1011'; EXPR1 | ---------------------------------------------------------------- 1110 |
说明:
当两个操作数为VARBIT类型且位数不等时,对较短的操作数左侧补零,再执行计算。
示例2
对BITINT类型数据进行按位异或运算。sql-- BIGINT类型 SQL> SELECT 9223372036854775800 ^ 9223372036854775705; EXPR1 | ------------------------------------------------------------------------------ 97 |
示例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 | ---------------------------------------------------------------- 0 | -- 更多类型转换示例 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 ^ c2, c2 ^ c2, c3 ^ c4, c4 ^ c4, c5 ^ c5, c6 ^ c6, c7 ^ c7 FROM tab_tt; EXPR1 | EXPR2 | EXPR3 | EXPR4 | EXPR5 | EXPR6 | EXPR7 | ------------------------------------------------------------------------------ 3 | 0 | 7 | 0 | 0 | 0 | 0 |
说明:
BIGINT类型的按位异或运算支持隐式转换成BIGINT类型运算。