使用以下:
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的遊標。 –