我试图从用单精度32位十六进制编写的BLOB列中提取浮点值。为了更详细地说明,我在下面构建了类似于我正在使用的Mysql-db的示例:即包含值'42f00000‘的BLOB列的表。目的是要有一个从它中提取'120‘值的函数。
示例数据集将是:
CREATE TABLE MyTable (FirstColumn BLOB);
INSERT INTO MyTable (FirstColumn) VALUES (0x42f00000); #Representing value 120 in single-precision 32bit Hex
SELECT *
FROM MyTable;后者的输出“SELECT*”如下:

我很难编写一个可以在整个专栏中实现这个功能的函数。我尝试了我在互联网上发现的东西,但没有成功。
SELECT UNHEX(FirstColumn)
FROM MyTable;
## NULL-result
SELECT CONV(FirstColumn, 10,16)
FROM MyTable;
## 0 as result希望有人有类似的经历?
发布于 2017-01-11 12:31:04
我能够完成第一步,即从BLOB中提取HEX值。
SELECT CONCAT("0x",HEX(CAST(FirstColumn AS CHAR(10000) CHARACTER SET utf8)))
FROM MyTable;此代码将'0x42F00000‘作为字符串返回。
下一步是通过单精度转换(而不是ASCI)将这个HEX值(这是一个字符串)解码成浮点数。类似于这种类型的转换:https://www.h-schmidt.net/FloatConverter/IEEE754.html
有什么想法吗?
https://stackoverflow.com/questions/41557344
复制相似问题