在Oracle SQL表中存储IP地址

Cha*_*ala 1 sql database oracle ip-address

我创建了一个存储IP地址的表.

CREATE TABLE ipdetails( ip_address DECIMAL(16,4) NOT NULL, vlan_id varchar(50) );

但是,当我尝试插入表格时,它给了我一个错误:

INSERT INTO ipdetails VALUES (192.169.165.128, 'Sample1')
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以在SQL表中存储一个带有大量小数位的数字,如果是这样,我应该使用什么数据类型?请指教.

提前致谢!

Joe*_*Joe 5

你有几个选择:

  • 将其存储为VARCHAR.IP地址实际上并不是您可能会进行数学运算的数字,那么为什么要以数字格式存储呢?
  • 将其作为单个数字存储在十六进制中.虽然你不能真正用十进制来做,但在十六进制中,IP是一个8位数字.
  • 将其存储为(最多)四个单独的字段.可能不必要但对于某些应用程序(您可能希望主要只关注IP的一部分)这可能是有用的.

  • IP地址中的句点不是小数.它们只是字段分隔符; 写"192:168:213:153"而不是点数是合法的. (2认同)