oracle - PL/SQL中的移位运算符

标签 oracle plsql bitwise-operators

PL/SQL中是否有shift运算符的替代方法?有bitand函数,但仅接受binary_integer类型的参数。

如果我需要检查真长数字的较低/较高位(可能在行中设置),该怎么办?

C中,有<<>>运算符。如何在PL/SQL中实现它们?

最佳答案

以下答案不是与字节序无关的,我的措辞基于小字节序格式...

您可以简单地将参数乘以2(左移)或将参数除以2(右移)以得到x的幂,其中x是要移位的位数。例如,如果我需要将数字(255:11111111)的低位字节向左移16位,我将执行以下操作:

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

相反,如果我想将值16711680右移16位,我将执行以下操作:
select 16711680 / power(2,16) from dual;
-- the result will be (255:11111111)

关于oracle - PL/SQL中的移位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776355/

相关文章:

oracle - 如何调用 Oracle PL/SQL 对象 super 方法

sql - 如何用另一个表中的另一行替换表中的一行?

oracle utl_mail消息正文大小限制

基于 Oracle 函数的索引

swift - 在 Swift 中获取 float 的原始字节

c - 为什么 if(-8 & 7) 返回 false

Java 表达式等价

java - 性能 : Writing oracle ResultSet into XLSX using Java, Apache-POI

神谕。在两个过程中重用游标作为参数

java - SQL trunc/group/order by dates (day/month/quarter/year) with sum skip dates with no data