2009-03-03 9 views
7

एसक्यूएल सर्वर में मैं ^ प्रतीक का उपयोग किया गया है, लेकिन ओरेकल में काम करने के लिए प्रतीत नहीं होता है।बिटवाइस अनन्य या Oracle

ओरेकल में मैं थोड़ा सा विशिष्ट OR कैसे करूं?

उत्तर

7

डॉक्स से:

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; 

देखने के लिए कि इन काम, बस 0s और 1s के लिए के साथ तर्क का पालन करें इनपुट, और फिर नहीं कि कोई उधार या क्षय नहीं है।

- मार्कसक्यू

+1

xor = p1-2 * बिटैंड (पी 1, पी 2) + पी 2 – Akvel

5

BITAND ऑपरेटर नहीं है:

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

आप इसे से build up the other operators कर सकते हैं, और here

+0

मेरा मानना ​​है कि अब आपको डेटाबेस को ट्रिक करने के लिए +0 की आवश्यकता नहीं है। – orbfish

2

कोई आसान तरीका नहीं है।

आप RAW मूल्यों में स्ट्रिंग HEX मूल्यों डाली और उपयोग कर सकते हैं UTL_RAW:

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

--- 
03