2009-03-03 33 views
7

Trong Máy chủ SQL Tôi đã sử dụng biểu tượng ^, tuy nhiên điều đó dường như không hoạt động trong Oracle.Độc quyền bitwise HOẶC trong Oracle

Làm cách nào để thực hiện một độc quyền bit một cách độc quyền OR trong Oracle?

Trả lời

7

Từ các tài liệu:

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; 

Để thấy rằng những công việc, hãy làm theo logic chỉ với 0s và 1s cho đầu vào, và sau đó không phải là không có mượn hoặc sâu răng.

- MarkusQ

+1

xor = p1-2 * bit và (p1, p2) + p2 – Akvel

5

Có nhà điều hành BITAND:

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

Bạn có thể build up the other operators từ nó; và here.

+0

Tôi tin rằng bạn không còn cần +0 để lừa cơ sở dữ liệu nữa. – orbfish

2

Không có cách nào dễ dàng.

Bạn có thể đúc chuỗi HEX giá trị vào RAW giá trị và sử dụng UTL_RAW:

SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX'))) 
FROM dual 

--- 
03 
Các vấn đề liên quan