發表文章

目前顯示的是 3月, 2019的文章

T-SQL 透過 XOR / AND 運算式做複合式判斷 1, 2, 4, 8, 16 列舉值

若想用一個數值表示多個條件是否成立,這些複合條件設計一個列舉 , 每個條件對應一個  2 的幕次方,如: 1, 2, 4, 8, 16... 舉例  1 號條件值 = 1: 0001 2 號條件值 = 2: 0010 3 號條件值 = 4: 0100 4 號條件值 = 8: 1000 有個變數 A 包含 1 號條件與 3 號條件 ,用 XOR 運算變數 A 等於 5 0001 0100 ------ 0101 比對 變數 A 是否有包含 3 號條件,用 AND 運算會得到 4,與 3 號條件的值相同,表示成立 0101 0100 ------ 0100 比對 變數 A 是否有包含 數值 2,用 AND 運算會得到 0,與 2 號條件的值不同,表示不成立 0101 0010 ------ 0000 以 T-SQL 實作範例 /*Enums */ DECLARE @Gold int = 1, @Silver int = 2, @Pearl int = 4, @Diamond int = 8; DECLARE @MyGift int; /*Add some */ SET @MyGift =  @Gold | @Diamond; /*Check if I have */ select 'I have Gold', IIF(@Gold & @MyGift = @Gold, 'Yes', 'No') union all select 'I have Silver', IIF(@Silver & @MyGift = @Silver, 'Yes', 'No') union all select 'I have Pearl', IIF(@Pearl & @MyGift = @Pearl, 'Yes', 'No') union all select 'I have Diamond', IIF(@Diamond & @