0

我有一个包含bit数据类型列表的表。如果其中两个属性,我们将调用它们attrib1并且attrib2BOTH = 1,我希望查询中的单个列输出为 1。

如果它们都是 0,我想将第一个结果集合并到第二个结果集,如果两个属性都为 0,则输出单个列和 0

所以

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

仅当情况为真时,我才需要该语句在带有“1”的列中输出。

4

1 回答 1

1

您需要Bitwise Exclusive OR (^)WHERE子句中添加一个,以便只选择其中两列attrib1attrib2具有01的行。在 中,如果两列都有1SELECT ,则需要使用Bitwise And (&)来显示1 ;如果两列都有0 ,则需要使用显示0

脚本:

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
于 2012-04-27T20:05:24.880 回答