BIGINT VALOR?
como eu mostro valor original do campo BigInt do sql server?
Não entendi [Ô]valor original[Ô], você quer dizer o valor que era antes de um update?
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
o biglnt ele convert para numero 51241554
quero trazer valor original 127.0.0.1
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()
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()
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.
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.
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á.
entao preciso usa mesmo campo como está.
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.
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.
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
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
é 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
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
Tópico encerrado , respostas não são mais permitidas