2009-09-21 101 views
2

因此,我被告知DBA將在我們的MySQL數據庫的DECIMAL(39,0)字段中存儲IP地址。Java:如何將MySQL DECIMAL(39,0)IP地址轉換爲字符串

我該如何將其轉換爲字符串以傳遞給我們的其他應用程序?

注意:我們的數據庫不能承擔更多的負載,因此儘可能多的工作需要在Java應用程序中完成。

注2:IPv6支持是必須的。

回答

-1

問題解決了,我說服數據庫人員把它作爲一個VARCHAR來存儲。

+0

我正在嘗試構建一個IPv6號碼來解決轉換器。就像我之前說的那樣,BigDecimal(映射到MySQL DECIMAL類型)是可行的,但它是一個棘手的問題。 – 2009-09-22 02:55:12

5

使用

INET_NTOA

例如:SELECT INET_NTOA(NUM)AS IPADDR;

INET_ATON

如:(...,INET_ATON( '192.168.0.1'),...)

這工作,因爲IPv4的最初被設計爲具有IP地址定義INSERT INTO addrTbl VALUES作爲32位數字。 dot-decimal notation用於可讀性。

更新

如果您希望從數執行轉換Java中的點分十進制的MindProd site has an example

+0

謝謝。我忘了提及,但使用MySQL函數調用或存儲過程是絕對不可能的。我們的數據庫內存很貴。 – Justin 2009-09-21 23:31:28

+0

我已經更新了答案,假設您打算在Java中執行此操作。 – 2009-09-21 23:40:06

+0

這是更有幫助,但仍然沒有真正削減它。你知道任何有IPv6支持的方法嗎? – Justin 2009-09-21 23:51:54

相關問題