我在 SQL 数据库中有两列:SubnetID
, SubnetName
例子:
SubnetID SubnetName
1 1.2.3.0/24
2 1.2.4.0/14
3 1.2.5.4/30
...
...
使用 SQL 代码,我需要为每个现有行(子网 ID、子网名称)添加另一列“IP 地址”。
输出:
SubnetID SubnetName IP Address
1 1.2.3.0/24 1.2.3.0
1 1.2.3.0/24 1.2.3.1
1 1.2.3.0/24 1.2.3.2
... ... ... and so on (till .24)
1 1.2.3.0/24 1.2.3.24
2 1.2.4.0/14 1.2.4.0
2 1.2.4.0/14 1.2.4.1
2 1.2.4.0/14 1.2.4.2
... ... ... and so on (till .14)
2 1.2.4.0/14 1.2.4.14
3 1.2.5.4/30 1.2.5.4
3 1.2.5.4/30 1.2.5.5
3 1.2.5.4/30 1.2.5.6
... ... ... and so on (till .30)
3 1.2.5.4/30 1.2.5.30
... etc.
所以基本上前两列需要保持原样,但附加列将具有覆盖 (.x/x) 范围的单独地址。
非常感谢您的任何建议。
最佳答案
如果我正确理解您的问题,与其在表中添加新列,不如创建另一个如下所示的表:
SubnetID IPAddress
-------------------
1 1.2.3.0
1 1.2.3.1
1 1.2.3.2
... ...
2 1.2.4.0
... ...
3 1.2.5.4
您的原始表格保持原样:
SubnetID SubnetName
---------------------
1 1.2.3.0/24
2 1.2.4.0/14
3 1.2.5.4/30
... ...
在我看来,这比你想做的要好,因为现在我们不会复制所有
SubnetName
值,我们现在可以避免冗余和所谓的 update anomaly .例如在您提出的示例中,如果您想更改
SubnetName
会发生什么情况id 2
来自 1.2.4.0/14
至 1.2.4.0/15
?您必须更改每一行 - 但使用这种方式,您只需更改一次。
关于sql - 创建一个包含来自子网列的 IP 地址的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51513170/