比较最后一组IP地址和附加缺失值



我在表A中具有以下IPv4 ipaddresses

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'的情况下(被切断,请使用更新语句和替换功能。

我尝试使用patindex函数获取最后一个点((的索引 0

select PATINDEX('.', IPAddress1) from TableA

返回:

0

理想情况下,我想到的是做以下操作:

字符串说明=启动位置不是确定的,因为某些值保持 -> .xx在最后一个值之前/group

之前有些.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)

其中的子句基本上寻找具有长度为11或12的IP,则意味着它们最终丢失了值。

我将SQL Server用作DBM。

我已经使用LEFTCHARINDEXREVERSE在最后一个.之前获取ipaddress2的一部分,而RIGHTCHARINDEXREVERSE在最后一个.之后获得ipaddress1的一部分。br>我还在Where子句中使用PARSENAME仅更新iPaddress2的最后一部分与ipaddress1不同的记录。

的最后一部分。

首先,创建和填充示例表(在您的未来问题中保存我们的这一步骤(

CREATE TABLE TableA
(
    IPAddress1 varchar(15), 
    IPaddress2 varchar(15)
)
INSERT INTO TableA VALUES
('10.20.30.91', '10.20.30.9'),
('63.90.84.45', '63.90.84.45'),
('10.5.5.100', '10.5.5.10')

更新语句:

UPDATE TableA
SET IPAddress2 = LEFT(IPAddress2, LEN(IPAddress2) - CHARINDEX('.', REVERSE(IPAddress2))) + 
                 RIGHT(IPAddress1, CHARINDEX('.', REVERSE(IPAddress1)))
WHERE PARSENAME(IPAddress2, 1) <> PARSENAME(IPAddress1, 1)

测试:

SELECT *
FROM TableA

结果:

IPAddress1      IPaddress2
10.20.30.91     10.20.30.91
63.90.84.45     63.90.84.45
10.5.5.100      10.5.5.100

尝试:STUFF

这也很好
UPDATE t SET IPAddress2 = STUFF(IPaddress2 , 
                            (LEN(IPaddress2) - CHARINDEX('.', REVERSE(IPaddress2), 1)+2) , 
                                LEN(Parsename(IPAddress2, 1)) ,parsename(IPAddress1,1)) 
FROM #tmp t
WHERE PARSENAME(IPAddress1, 1) <> PARSENAME(IPAddress2, 1)

您可以使用sql Server的副词:

select parsename(Ipaddressv4,1) , Parsename(Ipaddressv4another, 1)

通过此功能,您可以检索IP第四部分的值。您可以将其用于更新...

您可以使用以下内容获得IP地址的最后一位数字:

SELECT RIGHT(IpAddress,CHARINDEX('.',REVERSE(IpAddress))-1)

相关内容

  • 没有找到相关文章

最新更新