位运算符
位运算符对 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 长度不同的字符串 xyz
和 zy
。Vertica 使用一个零字节右侧填充字符串 zy
。相应地,结果中的最后一个字符表示为 \000
:
=> SELECT 'xyz'::VARBINARY & 'zy'::VARBINARY AS AND;
AND
--------
xy\000
(1 row)