,我有以下的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應該是相同的? –
不,它們不相同。這是我第一次想到 –