321*_*21X 2 sql t-sql sql-server
我想知道在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
Run Code Online (Sandbox Code Playgroud)
所以如果我选择FOR EXAMPLE sunday和saturday我的二进制值是65.
我如何与选择T-SQL那65将是7?
编辑
让我们说我有两个列的两个记录:
ID | SelectedDays
------|--------------
1 | 65
2 | 3
Run Code Online (Sandbox Code Playgroud)
因此,ID 1将返回7,因为这将是被选中的星期六,ID 2并将返回星期一.
SELECT FLOOR(LOG(bit_week)/LOG(2))+1
Run Code Online (Sandbox Code Playgroud)
根据日期返回1到7.
logaritm与power基数2中的obtanin logaritm 相反,诀窍是"除以基数".反过来,FLOOR提供了最有意义的位.