- 类别:
BITSHIFTLEFT¶
将数值表达式的位向左移动 n
位。
- 别名:
BIT_SHIFTLEFT
- 另请参阅:
语法¶
BITSHIFTLEFT( <expr1> , <n> )
实参¶
expr1
此表达式的计算结果必须是可以转换为
INTEGER
的数据类型。n
要移动的位数。
返回¶
这将返回一个有符号的 128 位(16 字节)整数,而不管输入数据值的大小或数据类型如何。
使用说明¶
如果任何实参的数据类型是数值但不是
INTEGER
(例如 FLOAT、DECIMAL 等),则该实参将转换为INTEGER
。如果任何实参的数据类型是字符串(例如
VARCHAR
),则该实参将转换为INTEGER``(如果可能)。例如,字符串“12.3”将转换为 12。如果该值无法转换为 ``INTEGER
,则该值被视为 NULL。如果任何实参为 NULL,则结果为 NULL。
结果是一个有符号整数。如果高位的值发生变化(从 0 到 1,或从 1 到 0),则结果的符号将相反。例如,
BITSHIFTLEFT(1, 127)
返回一个负数。移到 128 位输出值末尾之外的位将被丢弃。
示例¶
此示例说明如何使用 BITSHIFTLEFT
和 BITSHIFTRIGHT
:
创建简单的表和数据:
CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);INSERT INTO bits (ID, bit1, bit2) VALUES ( 11, 1, 1), -- Bits are all the same. ( 24, 2, 4), -- Bits are all different. ( 42, 4, 2), -- Bits are all different. ( 1624, 16, 24), -- Bits overlap. (65504, 0, 65504), -- Lots of bits (all but the low 6 bits) ( 0, NULL, NULL) -- No bits ;执行查询:
SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1) FROM bits ORDER BY bit1;输出:
+------+-------+-----------------------+------------------------+ | BIT1 | BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) | |------+-------+-----------------------+------------------------| | 0 | 65504 | 0 | 32752 | | 1 | 1 | 2 | 0 | | 2 | 4 | 4 | 2 | | 4 | 2 | 8 | 1 | | 16 | 24 | 32 | 12 | | NULL | NULL | NULL | NULL | +------+-------+-----------------------+------------------------+