2012-04-27 64 views
0

我有一个包含bit数据类型列表的单个表。如果其中的两个属性,我们称之为attrib1attrib2都是BOTH = 1,我想查询中的单个列输出为1.要在一列中输出的两个二进制属性

如果它们都是0,我想联盟的第一个结果设置为第二个,其中,如果这两个属性是0,一列是输出与0

所以

SELECT attrib1, attrib2 
FROM myTable 
WHERE (attrib1 = 1) AND (attrib2 = 1) 

我需要声明输出与一列只有在案例属实的情况下,才可以使用'1'。

回答

1

需要在一个Bitwise Exclusive OR (^) WHERE使得只有行,其中两个柱attrib1attrib2要么或被选择子句。在SELECT,你需要使用Bitwise And (&)显示如果两列有或显示如果两列有。

脚本:

CREATE TABLE dbo.myTable 
(
     id  int NOT NULL IDENTITY 
    , attrib1 bit NOT NULL 
    , attrib2 bit NOT NULL 
); 

INSERT INTO dbo.myTable (attrib1, attrib2) VALUES 
    (1, 1), 
    (0, 1), 
    (1, 0), 
    (0, 0); 

SELECT id 
    , attrib1 & attrib2 AS attrib1_2 
FROM dbo.myTable 
WHERE (attrib1^attrib2 = 0); 

结果将是:

id attrib1_2 
-- --------- 
1  1 
4  0 
+0

因此,一个ID也被包括在这一着呢,而不是查询结果返回ID ATTRIBUTE1 attribute2其中ATTRIBUTE1和属性2只'1s'我想要一个名为attrib1_2的别名列。我计划与那些都是0的结果相结合 – wootscootinboogie 2012-04-27 20:12:52