我有一个包含bit
数据类型列表的表。如果其中两个属性,我们将调用它们attrib1
并且attrib2
BOTH = 1,我希望查询中的单个列输出为 1。
如果它们都是 0,我想将第一个结果集合并到第二个结果集,如果两个属性都为 0,则输出单个列和 0
所以
SELECT attrib1, attrib2
FROM myTable
WHERE (attrib1 = 1) AND (attrib2 = 1)
仅当情况为真时,我才需要该语句在带有“1”的列中输出。
我有一个包含bit
数据类型列表的表。如果其中两个属性,我们将调用它们attrib1
并且attrib2
BOTH = 1,我希望查询中的单个列输出为 1。
如果它们都是 0,我想将第一个结果集合并到第二个结果集,如果两个属性都为 0,则输出单个列和 0
所以
SELECT attrib1, attrib2
FROM myTable
WHERE (attrib1 = 1) AND (attrib2 = 1)
仅当情况为真时,我才需要该语句在带有“1”的列中输出。
您需要Bitwise Exclusive OR (^)
在WHERE子句中添加一个,以便只选择其中两列attrib1
或attrib2
具有0或1的行。在 中,如果两列都有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