我有一个带有SQL语句的Oracle连接字符串:
OracleCommand cmd = new OracleCommand("SELECT * FROM Database WHERE IPADDRESS='10.00.000.000' ORDER BY DATETIME ASC", con);在将所有数据加载到数据集中之后,我将检查行"RAWOUTPUT1“的位,并将其写入正确的列:
int bit = Convert.ToInt32(dr[22]);
dr[24] = (bit & (1 << 0)) != 0;
dr[25] = (bit & (1 << 1)) != 0;
dr[26] = (bit & (1 << 2)) != 0;
dr[27] = (bit & (1 << 3)) != 0;
dr[28] = (bit & (1 << 4)) != 0;
dr[29] = (bit & (1 << 5)) != 0;
dr[30] = (bit & (1 << 6)) != 0;
dr[31] = (bit & (1 << 7)) != 0;
dr[32] = (bit & (1 << 8)) != 0;
dr[33] = (bit & (1 << 9)) != 0;我现在的问题是数据太大了,我得到了一个内存异常。所以我的想法是只从我需要的数据库中加载数据,如下所示:
OracleCommand cmd = new OracleCommand("SELECT * FROM Database WHERE IPADDRESS='10.00.000.000'
AND IF((RAWOUTPUT1 & (1 << 0)) != 0) //here I need help, example for check bit
ORDER BY DATETIME ASC", con);谢谢你的帮助!
发布于 2014-12-15 09:44:49
你找什么呢?所有记录,在RAWOUTPUT1中至少设置一个位?
AND RAWOUTPUT1 <> 0或者所有的记录所有给定的10位都被设置了?
AND RAWOUTPUT1 = 1023或者十位中至少有一位是在哪里设置的?
AND BITAND(RAWOUTPUT1, 1023) > 0编辑:如果你正在寻找一个特定的位,那么比特和与之相对应的力量是2:
AND BITAND( RAWOUTPUT1, POWER(2,:n-1) ) <> 0发布于 2014-12-15 09:39:20
尝试使用oracle函数BITAND 01/server.111/b28286/functions014.htm#SQLRF00612
发布于 2014-12-15 09:53:04
我对Oracle数据库没有多少经验,但我认为IF条件不能在WHERE子句中以这种方式使用。筛选您的行,将条件设置为如下所示:
AND BITAND(RAWOUTPUT1, 1) <> 0https://stackoverflow.com/questions/27480884
复制相似问题