有没有办法通过SQL(MySQL)获得第一个有效位?

时间:2010-07-12 15:55:22

标签: sql mysql

我有一个名为a的列和一个名为b的列。

我想在b列填充UPDATE ... SET b = ...查询,以便它包含a设置为1的第一位。好吧,你可能不明白,它更容易通过一个例子来理解:

a = 2508 = 0x9CC = 0100111001100  
b = 4    = 0x4   = 0000000000100

a = 2080 = 0x820 = 0100000100000  
b = 32   = 0x20  = 0000000100000

有没有办法在纯SQL中执行此操作?

1 个答案:

答案 0 :(得分:2)

这应该这样做:

update your_table
set b = if(a > 0,pow(2,instr(reverse(bin(a)),'1')-1),0);