如何在MySQL中将类型转换为bigint?

时间:2011-01-11 17:13:38

标签: sql mysql

CAST()似乎只适用于BINARY,CHAR,DATE; DATETIME,DECIMAL,TIME,SIGNED,UNSIGNED。

我需要将十六进制字符串转换为bigint,也就是说,我想要:

SELECT CAST(CONV("55244A5562C5566354',16,10) AS BIGINT)

CONV()返回一个字符串,这就是我尝试转换它的原因。我有2个用途

  • 插入数据,例如INSERT INTO a(foo) SELECT CONV(bar,16,10) FROM ...这里foo是一个bigint列,bar为varchar。也许我可以将select语句作为一个字符串,并让MySQL处理它(?)

  • 返回客户端将动态学习列的数据类型的数据,SELECT CONV(bar,16,10)并不好,因为客户端会将其作为字符串处理。

2 个答案:

答案 0 :(得分:22)

SELECT CAST(CONV('55244A5562C5566354',16,10) AS UNSIGNED INTEGER);

答案 1 :(得分:2)

似乎有什么问题?我已经在64位和32位系统上测试了这种转换。工作良好。请注意,您可以将数字视为十六进制,而不是进行十六进制到二进制转换。

mysql> SELECT CAST(X'55244A5562C5566354' AS UNSIGNED);
+-----------------------------------------+
| CAST(X'55244A5562C5566354' AS UNSIGNED) |
+-----------------------------------------+
|                     2614996416347923284 |
+-----------------------------------------+
1 row in set (0.00 sec)