Bitwise exclusive OR in Oracle

前端 未结 3 1845
广开言路
广开言路 2021-01-18 07:34

In SQL Server I have been using the ^ symbol, however that doesn\'t seem to work in Oracle.

How do I do a bitwise exc

相关标签:
3条回答
  • 2021-01-18 08:06

    From the docs:

    function bitor(p1 number, p2 number) return number is
    begin
      return p1-bitand(p1,p2)+p2;
    end;
    
    function bitxor(p1 number, p2 number) return number is
    begin
      return bitor(p1,p2)-bitand(p1,p2);
    end;
    

    To see that these work, follow the logic with just 0s and 1s for input, and then not that there are no borrow or caries.

    -- MarkusQ

    0 讨论(0)
  • 2021-01-18 08:07

    There's no easy way.

    You may cast string HEX values into RAW values and use UTL_RAW:

    SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX')))
    FROM dual
    
    ---
     03
    
    0 讨论(0)
  • 2021-01-18 08:09

    There is the BITAND operator:

    select bitand(49,54)+0 from dual;
    

    You can build up the other operators from it.

    0 讨论(0)
提交回复
热议问题