有这样的数据: 0x1234567890abcdef的二进制数据
我要取前4个字节,转换为整数
mysql> SELECT convert(substring(0x1234567890abcdef,1,4), SIGNED );
+-----------------------------------------------------+
| convert(substring(0x1234567890abcdef,1,4), SIGNED ) |
+-----------------------------------------------------+
| 0 |
+-----------------------------------------------------+
这个代码哪里有问题?
greeneryye(叶浩恩) 2011-02-16 18:58:35
正确的是得到 2018915346(也就是0x78563412)
得到305419896(0x12345678)也可以。
我要取前4个字节,转换为整数
mysql> SELECT convert(substring(0x1234567890abcdef,1,4), SIGNED );
+-----------------------------------------------------+
| convert(substring(0x1234567890abcdef,1,4), SIGNED ) |
+-----------------------------------------------------+
| 0 |
+-----------------------------------------------------+
这个代码哪里有问题?
greeneryye(叶浩恩) 2011-02-16 18:58:35
正确的是得到 2018915346(也就是0x78563412)
得到305419896(0x12345678)也可以。
解决方案 »
- Like 关键字 实现多条件选择匹配
- MySQL Server Error:Can't connect to MySQL server on 'localhost' (10048)
- JavaScript怎样连接MySQL数据库 100分?
- 一个简单的数据库查询语句POSTGRES
- 200分紧急求救
- 如何根据表名找mysql的主键?
- 新手安装sql请高手指教
- MySQL是装在哪里用的?Windows上可以用吗?谁能简要的介绍一下
- mysql 多表查询 1700+条数据查询1700+次 需要20多分钟,怎么可以优化一下
- 遇到一个小问题大概是这样的,有没有老司机帮忙解答一下,就要一个sql语句就行了
- MySQL WorkBench的安装问题
- postgresql数据库 sql 存储过程的问题
+--------------------------+
| CONV('12345678', 16, 10) |
+--------------------------+
| 305419896 |
+--------------------------+
1 row in set (0.00 sec)mysql>
我的要求是要把16进制数据转换为数值
create function binary2int(buf binary(4))
returns int
begin
return ascii(substring(buf,4,1))<<24
|ascii(substring(buf,3,1))<<16
|ascii(substring(buf,2,1))<<8
|ascii(substring(buf,4,1));end&&用到函数substring,估计效率不高
但能解决问题
后来我又用C写了个mysql扩展函数来处理。