在MySQL中将十六进制列转换为十进制

17
我正在编写一个应用程序,它将对CSV文件进行一些格式化,并在此之后将表格上传到mysql,然后程序应该将一个(十六进制)列转换为十进制列。表格看起来像这样:col1 | col2 | hexcol | deccol。所以我需要取hexcol并从hex转换为dec,然后将其放入deccol中。我尝试了简单的SELECT UNHEX('hexcol');,但它不起作用,它说这个列不在字段列表中...任何帮助将不胜感激...

SELECT UNHEX(hexcol) FROM table; 没有引号,因为引号会将值作为字符串而不是列名处理。 - Mark Baker
我不知道为什么,但是当我添加FROM table时它可以工作...现在我该如何使用UNHEX(hexcol)更新deccol呢?我尝试过update table set deccol = UNHEX(hexcol),但它没有影响任何行...??? - user2110604
1
你的deccol列是什么数据类型? - Mark Baker
尽管有超过一千行,但是没有受影响的行数。(查询耗时0.0131秒) - user2110604
我指的是deccol列的数据类型是varchar(40) - user2110604
SELECT UNHEX(hexcol) FROM table ... 获取所有hexcol数据,但与它们相同...它没有解码...有人能告诉我它们应该是什么数据类型吗? - user2110604
2个回答

29

试试这个:

SELECT CONV(hexcol, 16, 10);

当我尝试使用SELECT CONV(hexcol, 16, 10);时,我得到了#1054 - 'field list'中未知的列'hexcol'。 - user2110604
只有这个 (SELECT CONV( 'hexcol', 16, 10 )) 能够工作,但它将 hexcol 视为字符串。 - user2110604
这个可以工作...我不知道为什么在使用列时Mysql会占用一些空间...!!! - user2110604

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接