gpt4 book ai didi

mysql - INET_ATON 的 SQL Server 等价物是什么

转载 作者:可可西里 更新时间:2023-11-01 07:03:07 25 4
gpt4 key购买 nike

正如问题所说,mySql 中 INET_ATON 的 SQL Server 等价物是什么。我需要这个的原因是因为我从 http://ipinfodb.com/ip_database.php 导入了一个 IP 数据库进入 SQL Server 2005,现在想查询表。但根据他们的示例,我不确定该怎么做。

INET_ATON(expr)

Given the dotted-quad representation of a network address as a string, returns an integer that represents the numeric value of the address. Addresses may be 4- or 8-byte addresses.

mysql> SELECT INET_ATON('209.207.224.40');
-> 3520061480

最佳答案

看看这些 stored procedure examples为了实现这一目标

CREATE FUNCTION dbo.ipStringToInt 
(
@ip CHAR(15)
)
RETURNS INT
AS
BEGIN
DECLARE @rv INT,
@o1 INT,
@o2 INT,
@o3 INT,
@o4 INT,
@base INT

SELECT
@o1 = CONVERT(INT, PARSENAME(@ip, 4)),
@o2 = CONVERT(INT, PARSENAME(@ip, 3)),
@o3 = CONVERT(INT, PARSENAME(@ip, 2)),
@o4 = CONVERT(INT, PARSENAME(@ip, 1))

IF (@o1 BETWEEN 0 AND 255)
AND (@o2 BETWEEN 0 AND 255)
AND (@o3 BETWEEN 0 AND 255)
AND (@o4 BETWEEN 0 AND 255)
BEGIN
SELECT @base = CASE
WHEN @o1 < 128 THEN
(@o1 * 16777216)
ELSE
-(256 - @o1) * 16777216
END

SET @rv = @base +
(@o2 * 65536) +
(@o3 * 256) +
(@o4)
END
ELSE
SET @rv = -1
RETURN @rv
END

示例用法

INSERT mytable VALUES(dbo.ipStringToInt('1.2.3.4'))

如果你想反转它并将一个整数变成一个点分四边形,试试这个

CREATE FUNCTION dbo.ipIntToString 
(
@ip bigINT
)
RETURNS CHAR(15)
AS
BEGIN
DECLARE @o1 bigINT,
@o2 bigINT,
@o3 bigINT,
@o4 bigINT

IF ABS(@ip) > 4294967295
RETURN '255.255.255.255'

SET @o1 = @ip / 16777216

IF @o1 = 0
SELECT @o1 = 255, @ip = @ip + 16777216

ELSE IF @o1 < 0
BEGIN
IF @ip % 16777216 = 0
SET @o1 = @o1 + 256
ELSE
BEGIN
SET @o1 = @o1 + 255
IF @o1 = 128
SET @ip = @ip + 2147483648
ELSE
SET @ip = @ip + (16777216 * (256 - @o1))
END
END
ELSE
BEGIN
SET @ip = @ip - (16777216 * @o1)
END

SET @ip = @ip % 16777216
SET @o2 = @ip / 65536
SET @ip = @ip % 65536
SET @o3 = @ip / 256
SET @ip = @ip % 256
SET @o4 = @ip

RETURN
CONVERT(VARCHAR(4), @o1) + '.' +
CONVERT(VARCHAR(4), @o2) + '.' +
CONVERT(VARCHAR(4), @o3) + '.' +
CONVERT(VARCHAR(4), @o4)
END

关于mysql - INET_ATON 的 SQL Server 等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1270855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com