sql - 有没有办法通过 SQL (MySQL) 获取第一个事件位?

标签 sql mysql

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

我想用 UPDATE ... SET b = ... 查询 b 列来填充,以便它包含 a 设置为的第一位1. 好吧,你可能没看懂,举个例子更容易理解:

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

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

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

最佳答案

应该这样做:

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

关于sql - 有没有办法通过 SQL (MySQL) 获取第一个事件位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229960/

相关文章:

mysql - 如何确保记录始终位于 mysql 中给定结果集中的顶部?

mysql - 内连接、更新、选择重复条目

mysql - 如何在外部为 MySQL 创建密码哈希?

python - MySQL Python 查询单独工作但在参数化时失败

Mysql当前版本不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

php - 在 MySQL 数据库中仅存储用户的最后 500 条记录

sql - 在 GROUP BY 分组中,根据另一列的最大值选择值

sql - 使用 Oracle/SQL group by 查找最大值

sql - 如何在 psql 中使用脚本变量?

mysql - PL/SQL 错误 - 精确获取返回的行数超过请求的行数