位运算符

位运算符对 INTEGER 和 BINARY/VARBINARY 数据类型执行位操作:

对 BINARY/VARBINARY 数据类型无效

字符串实参处理

对于所有位运算符,必须将字符串实参显式转换为 BINARY 或 VARBINARY 数据类型。例如:

=> SELECT 'xyz'::VARBINARY & 'zyx'::VARBINARY AS AND;
 AND
-----
 xyx
(1 row)

=> SELECT 'xyz'::VARBINARY | 'zyx'::VARBINARY AS OR;
 OR
-----
 zyz
(1 row)

位运算符将所有字符串实参视为长度相同。如果实参长度不同,则运算符函数会使用一个或多个零字节右侧填充较小的字符串,使其长度与较大的字符串相同。

例如,以下语句 AND 长度不同的字符串 xyzzy。Vertica 使用一个零字节右侧填充字符串 zy。相应地,结果中的最后一个字符表示为 \000

=> SELECT 'xyz'::VARBINARY & 'zy'::VARBINARY AS AND;
  AND
--------
 xy\000
(1 row)