,我有以下的IPv4 IPAddresses表A:IP地址的最后一组比较,并追加遗漏值
IPAddress1 | IPaddress2
10.20.30.91 | 10.20.30.9
63.90.84.45 | 63.90.84.45
10.5.5.100 | 10.5.5.10
我想最后一个点后检查最后一位数字/组()分离。例如,在第一条记录中,IPAddress1和IPAddress2分别以91和9结尾。在IPAddress2中,'1'被切断。我想编写T-SQL来比较这些最后的值,并且在1(或者它缺少的任何值 - 在记录3中它缺少'0')被切断的情况下,使用Update语句将1追加到它,替换功能。
我想最后的点()的获得指标使用PATINDEX功能,但因为点的出现了多次(),它返回:
select PATINDEX('.', IPAddress1) from TableA
返回:
0
理想是我脑子里想的是做以下几点:
串解释=起始位置不明确的,因为一些值保持 - > .XX一些.XXX的最后一个值/组前
串length_expression = 3,因为255是最大值,一个IP组可以容纳。
update TableA
set IPAddress2 = replace(IPAddress2, SUBSTRING(IPAddress2, start_expression , length_expression, string_replacement)
where (len(IPaddress2)=11) or (len(IPaddress2)=12)
where子句基本上寻找长度为11或12的IP,这意味着它们最后缺少值。
我正在使用SQL Server作为DBMS。
为什么不更新:'IPAddress2 = IPAddress1'? – gotqn
那么,IPAddress1和IPAddress2应该是相同的? –
不,它们不相同。这是我第一次想到 –