Shift-Operatoren in PL/SQL
Ob es eine alternative von shift
Operatoren in PL/SQL? Es ist bitand
Funktion, aber es akzeptiert nur binary_integer-Typ-Argumente.
Was soll ich tun, wenn ich muss prüfen, niedrigere/höhere bit der wirklich lange Zahl (wahrscheinlich in der Linie)?
In C
es gibt <<
und >>
Betreiber. Wie kann ich diese realisieren in PL/SQL?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die folgende Antwort ist nicht endianness Agnostiker und meine Formulierung basiert auf little-endian-format...
Können Sie shift bits einfach die Multiplikation (shift Links) und Division (shift rechts) das argument mit der 2 hoch x, wobei x die Anzahl von bits zu verschieben. zum Beispiel, wenn ich shift das low-byte einer Zahl (255:11111111) 16 bits auf der linken Seite würde ich führen Sie die folgende operation aus:
Umgekehrt, wenn ich verschieben möchten, die Wert 16711680 16 bits nach rechts würde ich die folgenden Aufgaben ausführen:
Seit der Oracle Version 8 ist es möglich, verwenden Sie java-code in der Datenbank. In PL/SQL können Sie definieren ein wrapper für die java-code. z.B.
In der java-code können Sie dann den shift-operator. Obwohl ein bisschen ungeschickt, aber es kann funktionieren auf diese Weise.
Leider ist dieses nicht möglich, mit Oracle XE, da es keine Unterstützung für Java in diesem "frei" - edition.
Hier ist meine eigene LPAD/RPAD Lösung.
Nehme ich Tom Kyte-Paket als Basis und erweitern Sie es.
Und tests