BIGINT VALOR?

ZIMIRO 14/12/2013 11:52:13
#432083
como eu mostro valor original do campo BigInt do sql server?
KERPLUNK 16/12/2013 09:32:36
#432117
Não entendi [Ô]valor original[Ô], você quer dizer o valor que era antes de um update?
ZIMIRO 16/12/2013 09:34:43
#432118
tipo eu add um insert no campo BigInt de ip tipo [Ô]127.0.0.1[Ô]
o biglnt ele convert para numero 51241554
quero trazer valor original 127.0.0.1
OCELOT 16/12/2013 09:51:42
#432119
Resposta escolhida
Como você está salvando o IP neste campo? O valor que você passou (51241554) não parece ser o equivalente a 127.0.0.1, que pelo que vi deveria ser 16777343

Para transformar um número em IP de volta pode-se usar o objeto IPAddress para isso

Dim IP as String = new System.Net.IPAddress(SeuValor).ToString()
KERPLUNK 16/12/2013 10:05:15
#432123
Fato é que endereço IP NÃO é UM VALOR NUMéRICO, mas como não existe um tipo de dados específico para ele no SQL Server(e que eu saiba também não em MySQL ou oracle), você vai ter que usar string mesmo.
NETMANIA 16/12/2013 14:28:16
#432141
No meu caso, eu uso um campo do tipo varchar de 15, para comportar os 4 blocos de 3 dígitos do IP, mais os pontos de separação dos dados.
ZIMIRO 16/12/2013 14:29:53
#432142
no caso eu nao posso mudar porque ja tem outro sistema que usa ele desse jeito nao tem acesso copido dele para alterar
entao preciso usa mesmo campo como está.
NILSONTRES 16/12/2013 15:38:39
#432147
O máximo que vc pode fazer ai é:
Dar um raplace para tirar os pontos , se não, não vai conseguir inserir, e depois cria uma mascara para formatar na hora de extrair os valores.
KERPLUNK 16/12/2013 15:39:39
#432148
Veja se isto pode ajudar
ZIMIRO 07/01/2014 16:20:40
#432749
nao deu muito certo e assim
sistema que ja existe ele salva assim
SET @IP1 =
(
CAST( PARSENAME( @fromIP, 4 ) AS BIGINT ) * 16777216 +
CAST( PARSENAME( @fromIP, 3 ) AS BIGINT ) * 65536 +
CAST( PARSENAME( @fromIP, 2 ) AS BIGINT ) * 256 +
CAST( PARSENAME( @fromIP, 1 ) AS BIGINT )
)

SET @IP2 =
(
CAST( PARSENAME( @toIP, 4 ) AS BIGINT ) * 16777216 +
CAST( PARSENAME( @toIP, 3 ) AS BIGINT ) * 65536 +
CAST( PARSENAME( @toIP, 2 ) AS BIGINT ) * 256 +
CAST( PARSENAME( @toIP, 1 ) AS BIGINT )
)

IF @IP1 = @IP2
BEGIN
INSERT INTO dbo.ip (fromip, toip) VALUES (@IP1, @IP2)


preciso trazer valor original do ip
OCELOT 08/01/2014 09:40:55
#432782
é simples até, só reverter a operação

SELECT CAST(campoComOIP / 16777216 AS VARCHAR) + [ô].[ô] + CAST((campoComOIP / 65536) & 255 AS VARCHAR) + [ô].[ô] + CAST((campoComOIP / 256) & 255 AS VARCHAR) + [ô].[ô] + CAST(campoComOIP & 255 AS VARCHAR) FROM TabelaDosIPs
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas