简单的查询

wqb 2002-08-15 03:32:28
表结构如下
CREATE TABLE
X.X (ID NUMBER NOT NULL,
INVOICEID NUMBER(18) NOT NULL,
AMOUNTCHARGED NUMBER(16, 2) NOT NULL,
INVOICESTATE NUMBER(3) DEFAULT 0 NOT NULL)

查询条件为
(INVOICEID=输入值 and INVOICESTATE 中 第6位(bit)值是1)

(AMOUNTCHARGED*100=输入值 and INVOICESTATE 中 第6位(bit)值是0)。
比如
ID INVOICEID AMOUNTCHARGED INVOICESTATE
1 1999 10.00 32(二进制即 100000)
2 1000 19.99 64(二进制即 1000000)
3 1001 19.99 31(二进制即 11111)
输入值是1999则以上三条都符合条件。

谢谢!

...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqb 2002-08-15
  • 打赏
  • 举报
回复
多谢两位
jlandzpa 2002-08-15
  • 打赏
  • 举报
回复
where (INVOICEID=输入值 and mod(floor(INVOICESTATE/32),2) = 1) or
(AMOUNTCHARGED * 100 = 输入值 and mod(floor(INVOICESTATE/32),2) = 0);
biti_rainy 2002-08-15
  • 打赏
  • 举报
回复
可以么?


SQL> select bitand(32,31)+0 from dual;

BITAND(32,31)+0
---------------
0

SQL> select bitand(32,33) + 0 from dual;

BITAND(32,33)+0
---------------
32

SQL> select bitand(32,64)+0 from dual;

BITAND(32,64)+0
---------------
0

SQL> select bitand(32,96)+0 from dual;

BITAND(32,96)+0
---------------
32

SQL> select bitand(32,96) from dual;

BITAND(32,96)
-------------
32

SQL> select bitand(32,95) from dual;

BITAND(32,95)
-------------
0

SQL>

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧