SQL Server – Separação de IP

Olá,

Muitas organizações guardam o IP das maquinas em uma tabela para poder ter um controle sobre os mesmos, esses dias no forum de SQL Server da Microsoft, um usuario estava com alguns problemas para separar o ip por seus Octetos, eu o ajudei com um codigo infelizmente bem sujo que abusava de substrings, o codigo funcionava? Sim, mas não era nada facil de ser implementado, então, uma das respostas me chamou a atenção!:

DECLARE @T AS TABLE(IP VARCHAR(20))

-- populando a tabela
INSERT INTO @T SELECT '10.34.9.76' UNION SELECT '10.4.6.98'

SELECT 
	Ip,
	PARSENAME(Ip,4) as OCT1,
	PARSENAME(Ip,3) as OCT2,
	PARSENAME(Ip,2) as OCT3,
	PARSENAME(Ip,1) as OCT4
FROM 
	@t

A mesma foi Sugerida por Leonardo Marcelino (aqui seu perfil no forum).

O que acontece, teoricamente, a função PARSENAME não é para isso, o real uso dela seria algo mais ou menos assim:

SELECT PARSENAME('AdventureWorks..Contact', 1) AS 'Object Name';
SELECT PARSENAME('AdventureWorks..Contact', 2) AS 'Schema Name';
SELECT PARSENAME('AdventureWorks..Contact', 3) AS 'Database Name';
SELECT PARSENAME('AdventureWorks..Contact', 4) AS 'Server Name';

Porem como o SQL Server identifica que o caracter que os separa é o “.” (ponto), pelo método foi Leonardo, ele “enganou” o SQL Server.

Achei uma abordagem muito interessante, alem do código ter ficado muito simples e limpo. Parabéns!

 

By: Fabrizzio Caputo

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s