2 annan211 annan211 于 2016.02.27 00:02 提问

mysql 数据库中 blob 类型存储数字 无法正常插入更新 30C

事情是这样的,在Mysql数据库中有个字段是blob类型的,里面存放的是 8字节无符号整数,
类似于 33454690,45672389,这样一类数值,我使用select 语句select conv(hex(bc.DataTimeStamp) ,16,10) as DataTimestamp 是可以正常显示的,现在我想把
33454690 这个数字 查找出来,加1,变为 33454691,再存放回去。

使用语句 insert into VALUES (33454691) 或者 insert into VALUES (conv(33454691 ,10,16)) 或者 insert into VALUES (concat('0x',hex(33454691))) ,都是不行的,在更新之后 查询,发现都变了样 编程不是我想要的。

原因是 mysql 的转换函数 conv 、concat 函数都是返回的字符串,mysql 会把返回的结果 当做字符串 再进行二进制转换 保存进入 blob,结果就是错的了。

我仅仅是想实现 insert into values (0x22C304) ,但是我不知道 0x22C304 是怎么由 33454691 转换而来并且不被当做字符串处理的。

谢谢大家,在线等。

2个回答

caozhy
caozhy   Ds   Rxr 2016.02.27 06:49

insert into VALUES (hex(33454691))
不需要加上0x

annan211
annan211 不行的,hex返回的是字符串类型的,mysql会把这个字符串 再翻译成16进制的数值,结果变成了 14129013038527539
接近 2 年之前 回复
annan211
annan211   2016.02.27 10:08

解决了,使用 CHAR(22339801) 这个函数就可以解决这个问题,还是谢谢你回复我。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!