2009-09-21 104 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

相关问题