sql >> Database >  >> RDS >> Oracle

Shift-operators in PL/SQL

Het volgende antwoord is niet endianness-agnostisch en mijn formulering is gebaseerd op het kleine endian-formaat...

U kunt bits verschuiven door eenvoudigweg het argument te vermenigvuldigen (naar links te schuiven) of te delen (naar rechts te verschuiven) door 2 tot de macht van x, waarbij x het aantal bits is dat moet worden verschoven. als ik bijvoorbeeld de lage-orde byte van een getal (255:1111111) 16 bits naar links moet schuiven, zou ik de volgende bewerking uitvoeren:

select 255 * power(2,16) from dual;  
-- the result will be (16711680:111111110000000000000000)

omgekeerd, als ik de waarde 16711680 16 bits naar rechts wil verschuiven, zou ik het volgende doen:

select 16711680 / power(2,16) from dual;
-- the result will be (255:11111111)


  1. Ondersteunt H2 een collatiedefinitie voor één enkele kolom?

  2. Geaggregeerde sleutel/waarde-paren uit een JSONB-veld afvlakken?

  3. Waarom wordt de auto_increment-id niet één voor één verhoogd, hoe stel je deze in?

  4. 'ORA-00942:tabel of weergave bestaat niet' alleen bij uitvoering binnen een opgeslagen procedure