【发布时间】:2019-12-28 19:31:21
【问题描述】:
我有一列 CategoryId 将同时存储多个值,其中一些具有 1(BA)、2(SA)或 3(两者)。我不确定这是否正确。
例如,因为 3 包括 1 和 2,所以查询会导致所有记录。如果我想要具有 both 类别的行,那么按位将不起作用。我相信我混淆了术语。
样本数据和查询:
CREATE TABLE #Payment (Id INT, Name NVARCHAR(50), CategoryId INT)
INSERT #Payment (Id, Name, CategoryId) VALUES(1, N'A', 1) --BA
INSERT #Payment (Id, Name, CategoryId) VALUES(1, N'B', 2) --SA
INSERT #Payment (Id, Name, CategoryId) VALUES(1, N'C', 3) --BA and SA
INSERT #Payment (Id, Name, CategoryId) VALUES(1, N'D', 2) --SA
DECLARE @Value INT = 3
SELECT *
FROM #Payment
WHERE (CategoryId & @Value) = CategoryId
【问题讨论】:
-
你还有什么问题?
-
我需要在一种情况下获得只有这两个类别的,谢谢
-
看我的回答。你有什么检查任何位,而不是全部。
标签: sql-server tsql operators bitwise-operators