因此,我被告知DBA將在我們的MySQL數據庫的DECIMAL(39,0)字段中存儲IP地址。Java:如何將MySQL DECIMAL(39,0)IP地址轉換爲字符串
我該如何將其轉換爲字符串以傳遞給我們的其他應用程序?
注意:我們的數據庫不能承擔更多的負載,因此儘可能多的工作需要在Java應用程序中完成。
注2:IPv6支持是必須的。
因此,我被告知DBA將在我們的MySQL數據庫的DECIMAL(39,0)字段中存儲IP地址。Java:如何將MySQL DECIMAL(39,0)IP地址轉換爲字符串
我該如何將其轉換爲字符串以傳遞給我們的其他應用程序?
注意:我們的數據庫不能承擔更多的負載,因此儘可能多的工作需要在Java應用程序中完成。
注2:IPv6支持是必須的。
問題解決了,我說服數據庫人員把它作爲一個VARCHAR來存儲。
使用
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。
我正在嘗試構建一個IPv6號碼來解決轉換器。就像我之前說的那樣,BigDecimal(映射到MySQL DECIMAL類型)是可行的,但它是一個棘手的問題。 – 2009-09-22 02:55:12