سؤال

في خادم قاعدة البيانات لقد تم استخدام ^ الرمز، ولكن يبدو أن هذا لا يعمل وحي.

كيف أفعل حصريا bitwise OR في أوراكل؟

هل كانت مفيدة؟

المحلول

من المستندات:

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;

للتأكد من أن هذه تعمل، اتبع المنطق باستخدام 0 و 1 فقط للإدخال، ثم لا يوجد أي استعارة أو تسوس.

-- ماركوس س

نصائح أخرى

هناك مشغل BITAND:

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

أنت تستطيع بناء المشغلين الآخرين منه؛و هنا.

ليس هناك طريقة سهلة.

يمكنك إلقاء السلسلة HEX القيم في RAW القيم والاستخدام UTL_RAW:

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

---
 03
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top