从SQL Server列中选择IP地址
我从通过IP地址与主机名混合发送的其中一个脚本获取输出,所以我想要做的是设置一个查询来区分IP主机名称,以便我可以尝试在稍后解决使用Powershell(或其他)。我的问题是,当我的数据看起来如下所示时,我怎么才能从该行中选择IP地址(只是为了让问题得到解决)。从SQL Server列中选择IP地址
host123.na.root.net
host123.na.root.net
123.123.123.123
11.22.123.23
host789
host789
123.123.123.123
111.23.23.132
我会想回去将只是
11.22.123.23
123.123.123.123
111.23.23.132
编辑我已经看到了一些事情表明PARSENAME
,但我不知道如何将与FQDN是工作在那里。
基础上参考parsename()
,我假设的SQL Server:
where ip like '%.%.%.%' and -- has three periods
ip not like '%.%.%.%.%' and -- does not have four periods
ip not like '%[^0-9.]%' -- has only numbers and periods
在几乎任何其他数据库,你可以使用正则表达式。
谢谢,你的MSSQL正确,就像一个魅力! – Wingman1487
我建议是这样的:
SELECT DISTINCT address
FROM your_table
WHERE ISNUMERIC(REPLACE(address,'.',''))=1
我敢打赌,这可以在其他数据库中工作,尽管在MSSQL中它返回一个INT而不是BOOLEAN,所以它返回一个错误。 – Wingman1487
您可能会错过最后的= 1部分。 ISNUMERIC如果是数字则返回1,如果不是则返回0 – LordBaconPants
小心,ISNUMERIC可以返回有趣的结果。尝试1e或仅$。如有可能(SQL 2012+)使用TRY_CONVERT – scsimon
请与您正在使用的数据库标记您的问题。 –