使用以下:
IF ((@railReady = 1 AND @frameReady = 1) OR (@dryAReady = 1 AND @dryBReady = 1))
或替代,
IF ((@railReady & @frameReady) | (@dryAReady & @dryBReady)) = 1
的更多信息:
为了验证这一点,我们可以使用包含的所有组合真值表四个bit
值:
WITH B(x) AS (SELECT CAST(0 AS bit) UNION ALL SELECT CAST(1 AS bit))
, AllSixteenCombinations(a,b,c,d) AS
(SELECT * FROM B B1 CROSS JOIN B B2 CROSS JOIN B B3 CROSS JOIN B B4)
SELECT a,b,c,d
, CASE WHEN ((a = 1 AND b = 1) OR (c = 1 AND d = 1)) THEN 'Y' ELSE 'N' END[Logic]
, CASE WHEN ((a & b) | (c & d)) = 1 THEN 'Y' ELSE 'N' END [Bitwise]
FROM AllSixteenCombinations
输出:
以何种方式
a b c d Logic Bitwise
----- ----- ----- ----- ----- -------
0 0 0 0 N N
0 1 0 0 N N
0 0 1 0 N N
0 1 1 0 N N
1 0 0 0 N N
1 1 0 0 Y Y
1 0 1 0 N N
1 1 1 0 Y Y
0 0 0 1 N N
0 1 0 1 N N
0 0 1 1 Y Y
0 1 1 1 Y Y
1 0 0 1 N N
1 1 0 1 Y Y
1 0 1 1 Y Y
1 1 1 1 Y Y
(16 row(s) affected)
局部变量的声明?请显示代码 – heximal
除非在'while'循环(* shudder *)或'cursor'循环(* double shudder *)中设置了'@ curPartiId',否则很可能触发器在多行操作中被破坏也。 –
达成一致的达米安(+1),除非没有太大的差别(所以不知道为什么你不同地颤抖)。 while循环只是一个没有DECLARE CURSOR的游标。 –