- Kategorien:
BITSHIFTLEFT¶
Verschiebt die Bits für einen numerischen Ausdruck um n
Positionen nach links.
- Aliasse:
BIT_SHIFTLEFT
- Siehe auch:
Syntax¶
BITSHIFTLEFT( <expr1> , <n> )
Argumente¶
expr1
Dieser Ausdruck muss einen Datentyp haben, der in
INTEGER
umgewandelt werden kann.n
Die Anzahl der Bits, um die verschoben werden soll.
Rückgabewerte¶
Dies gibt eine vorzeichenbehaftete Ganzzahl mit 128-Bit (16-Byte) zurück, unabhängig von Größe oder Datentyp des Eingabedatenwerts.
Nutzungshinweise¶
Wenn der Datentyp eines der Argumente numerisch, aber nicht
INTEGER
ist (z. B. FLOAT, DECIMAL usw.), wird das Argument nach Möglichkeit inINTEGER
umgewandelt.Wenn der Datentyp des Arguments eine Zeichenfolge ist (z. B.
VARCHAR
), wird das Argument nach Möglichkeit inINTEGER
umgewandelt. So wird beispielsweise die Zeichenfolge „12,3“ in die Zahl 12 umgewandelt. Wenn der Wert nicht inINTEGER
umgewandelt werden kann, wird der Wert als NULL behandelt.Wenn ein Argument NULL ist, ist das Ergebnis NULL.
Das Ergebnis ist eine vorzeichenbehaftete Ganzzahl. Wenn sich der Wert des höchstwertigen Bits ändert (von 0 nach 1 oder von 1 nach 0), wird das Vorzeichen des Ergebnisses umgekehrt. Zum Beispiel gibt
BITSHIFTLEFT(1, 127)
eine negative Zahl zurück.Bits, die über das Ende des 128-Bit-Ausgabewerts hinaus verschoben werden, werden gelöscht.
Beispiele¶
In diesem Beispiel wird die Verwendung von BITSHIFTLEFT
und BITSHIFTRIGHT
veranschaulicht:
Erstellen Sie eine einfache Tabelle und Daten:
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 ;Führen Sie die Abfrage aus:
SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1) FROM bits ORDER BY bit1;Ausgabe:
+------+-------+-----------------------+------------------------+ | 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 | +------+-------+-----------------------+------------------------+