2013-01-15 41 views
0

我嘗試二進制代碼轉換爲MySQL的小數,但有一個很大的問題:奇怪的二進制數轉換成十進制在MySQL

SELECT CONV(BINARY('10000000000000000000000000000000000000001111111100000000000000000'),2,10) 

SELECT CONV(BINARY('11111111111111111111111111111111111111101111111111011110111100000'),2,10) 

給予同樣的錯誤的結果:18446744073709551615

儘管如果我使用bindec()PHP函數,我分別得到:

3 .6893488147386E + 19和1.8446744073743E + 19。這些結果是預期的,我會在我的SQL請求輸出中獲得它們。

感謝您的幫助!

+0

你有65個字符在你的號碼。這對於MySQL來說太多了。 – dnagirl

+0

謝謝,這確實是問題所在,但我找不到替代解決方案。 –

回答

0

假設爲了簡單起見,所有要轉換的字符串都是65個字符。這意味着在一個位置右移會使字符串可轉換。所以像這樣的東西可能會工作:

SELECT CONV(LEFT(mystring,64))*2 + RIGHT(mystring,1);