2011-01-11 67 views
6

CAST()似乎只適用於BINARY,CHAR,DATE; DATETIME,DECIMAL,TIME,SIGNED,UNSIGNED。如何在MySQL中將類型轉換爲bigint?

我需要一個十六進制字符串轉換爲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)是不好的,因爲客戶端將把它作爲一個字符串處理。

回答

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

因此,它將它轉換爲bigint /什麼?我不必擔心溢出一個「正常」整數? – Anonym

+2

@匿名:在'5.1'中,'CAST ... AS UNSIGNED'總是產生一個'BIGINT'。 – Quassnoi

+0

這是否記錄在任何地方? – will

2

出了什麼問題?我已經在64位和32位系統上測試過這種轉換。工作正常。請注意,您可以將數字視爲十六進制,而不是執行十六進制到二進制轉換。

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

cast('2'as BIGINT) - > _syntax error_ ...是問題 – will

相關問題