Consulta SQL para recuperar los campos que solo contienen numbers (específicamente una dirección IP)

Tengo bastantes tablas con un campo llamado compañía que pueden tener en ellas:

"Compañía falsa" o "5.5.5.5"

La dirección numérica anterior, por supuesto, es una dirección IP.

No estoy seguro de cómo escribir una consulta de selección que devuelve SOLAMENTE filas que tienen una dirección IP en ellas y no solo text. ¿Algunas ideas?

Podría usar RegularExpressions en SQL-Server, por ejemplo:

INSERT INTO tIP VALUES('Fake Company'); INSERT INTO tIP VALUES('5.5.5.5'); INSERT INTO tIP VALUES('192.168.5.8'); INSERT INTO tIP VALUES('192.168.5.88'); DECLARE @regexPattern varchar(100); SET @regexPattern='([0-9]{1,3}\.|\*\.){3}([0-9]{1,3}|\*){1}'; SELECT * FROM tIP WHERE dbo.RegexMatch( tIP.IP, @regexPattern ) = 1 

y aquí está la function:

 CREATE FUNCTION [dbo].[RegexMatch](@Input [nvarchar](4000), @Pattern [nvarchar](4000)) RETURNS [bit] WITH EXECUTE AS CALLER AS EXTERNAL NAME [RegexLib].[RegexLib.UserDefinedFunctions].[RegexMatch] 

Un poco crudo, pero podría funcionar para usted:

 SELECT ColumnName FROM TableName WHERE ColumnName LIKE '%.%.%.%' 

Otra posibilidad sería replace los puntos y verificar si el rest es numérico:

 SELECT ColumnName FROM TableName WHERE ISNUMERIC(REPLACE(ColumnName, '.', '')) = 1 

No es tan exacto como la solución RegEx, pero es suficiente para distinguir las direcciones IP de los nombres de las compañías, y tal vez es más rápido que RegEx o LIKE '%' .