我在想如果在T-SQL中確定二進制值中的最大數字是否存在短路(而不編程整個事物)。如何確定按位值中的最大位
在一列中,我存儲按位選擇幾天(1 = sunday, 2 = monday, .. 7 = saturday
)。
我的翻譯表:
-- day of week
-- 1 == 1 -> POWER(2,0) -> sunday
-- 2 == 2 -> POWER(2,1) -> monday
-- 3 == 4 -> POWER(2,2)
-- 4 == 8 -> POWER(2,3)
-- 5 == 16 -> POWER(2,4)
-- 6 == 32 -> POWER(2,5)
-- 7 == 64 -> POWER(2,6) -> saturday
所以,如果我選擇FOR EXAMPLE週日,上星期六,我的二進制值是65
如何我可以T-SQL
是65
選擇將是7
?
編輯
比方說,我有兩個記錄與兩列:
ID | SelectedDays
------|--------------
1 | 65
2 | 3
所以,ID 1
將回到7,因爲這將是選擇選擇和週六ID 2
將於週一返回。
你想某種基於集合的解決方案或是一個時間/光標好嗎? – JonH
拆分你的組合列,並使每一天都有自己的單一位列 –
@JonH嗯,理想情況下,我想寫儘可能少的代碼 – 321X