SQL按位运算

时间:2008-12-17 18:03:31

标签: sql bit-manipulation implication

对于我正在创建的名为VMAC的新安全范例,我有点迷恋。可变矩阵访问控制。我想对位串进行逻辑蕴涵。只是试图避免echoeureka(重新发明轮子)。

  1. 在重新发明轮子之前,是否有使用AND和OR和NOT或其他基本SQL二进制运算符模拟⇒(逻辑蕴涵)的既定快捷方式?

  2. XNOR允许我将⇒仿真减少到四个操作:NOT,XOR,OR,AND。但它并不广泛。 XNOR的任何已知快捷方式?我正在想一些关于操作数上的AND操作以及我脑海中的NOTted操作数。

  3. 通过在64位平台上实现按位数据结构或使用并行线程在大型数据对象的字大小段上运行的多线程应用程序的速度,对效率有何评论?

  4. (抱歉,我不是计算机科学家)

4 个答案:

答案 0 :(得分:2)

如果A然后B 在逻辑上等同于 (不是A)或B

答案 1 :(得分:1)

如果你正在操作一个字符串,那么

x -> y 

可以用C / C ++(或SQL)表示为:

~x | y

就速度而言,单个机器字上的按位运算符非常快,因为它们是在单个算术CPU指令中实现的。与实际检索数据的工作相比,进行数学运算的性能几乎可以忽略不计。

答案 2 :(得分:1)

  

有关通过在64位平台上实现按位数据结构实现的效率的任何评论(3)?使用在较大数据对象的字大小段上操作的并发线程来加速多线程应用程序?

我个人没有多想过,但Raymond Chen有一些评论。

  

在考虑是否应将字段更改为位域时,需要考虑以下几点。当然,位域可以节省数据内存,但您必须在代码大小,可调试性和减少多线程方面的成本之间取得平衡。如果你的课程只会被实例化几次(以及“少数几个”,我认为不到几千次),那么这些成本很可能超过节省。

答案 3 :(得分:0)

XNOR的定义是A * B +!A *!B

因此在SQL中可以像这样实现:

DECLARE @A AS BIT;
DECLARE @B AS BIT;

(@A & @B) | (~@A & ~@B)

可在此处找到备用表示法:http://michaelmairegger.wordpress.com/2011/10/14/sql-nand-xnor/