我在MySQL中有一张非常大的表,我使用了一个CHAR(32)字段,其中包含MD5作为字符串。 我遇到了一个问题,需要使用MySQL将其转换为十进制值。 由于第三方工具运行查询,因此编写代码并不是一个真正的选择。
MySQL确实支持本地存储十六进制值并将它们转换为整数。 但是,它会卡在从字符串转换的过程中。 这是我迄今为止尝试过的内容(md5_key是我的列名)。
首先,我只是尝试了UNHEX函数,但它返回一个字符串,所以它给了我一些乱码。 我不会把它放在这里。 接下来,我尝试了CAST函数。
MySQL确实支持本地存储十六进制值并将它们转换为整数。 但是,它会卡在从字符串转换的过程中。 这是我迄今为止尝试过的内容(md5_key是我的列名)。
首先,我只是尝试了UNHEX函数,但它返回一个字符串,所以它给了我一些乱码。 我不会把它放在这里。 接下来,我尝试了CAST函数。
SELECT CAST( CONCAT('0x',md5_key) AS UNSIGNED ) FROM bigtable limit 1
结果 = 0 显示警告信息为:"截断的不正确的整数值:'0x000002dcc38af6f209e91518db3e79d3'"
但是如果我这样做:
SELECT CAST( 0x000002dcc38af6f209e91518db3e79d3 AS UNSIGNED );
我得到了正确的十进制值。
所以我想知道,有没有一种方法让MySQL将该字符串视为十六进制值?(我还尝试将其转换为二进制,然后转换为无符号数,但那也不起作用)。
提前感谢!