MSSQL 模仿 MYSQL 的IPV4与BIGINT类型互转函数

/*********************************************/

/****** 自定义函数 [dbo].[INET_ATON] ******/
/****** 将IPV4转换为bigint型数字         ******/
/*********************************************/

CREATE FUNCTION [dbo].[INET_ATON](   

@ip NVARCHAR(15)   
)RETURNS BIGINT   
AS   
BEGIN   
DECLARE @iip BIGINT   
SET @iip = 0    
SELECT @iip=@iip+LEFT(@ip, CHARINDEX('.',@ip+'.')-1 )*id, 
  @ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')  
FROM(   
SELECT id = CONVERT(BIGINT, 1*256*256*256)   
UNION ALL SELECT 1*256*256   
UNION ALL SELECT 1*256   
UNION ALL SELECT 1
) AS T
RETURN (@iip) 

END

---------------------------------------------------------------------------------------

/*********************************************/
/****** 自定义函数 [dbo].[INET_NTOA] ******/
/****** 将bigint型数字IP转换为IPV4      ******/

/*********************************************/

CREATE FUNCTION [dbo].[INET_NTOA](
@iip BIGINT   
)
RETURNS NVARCHAR(15)   
As   
BEGIN   
DECLARE @ip NVARCHAR(15)   
SET @ip = ''   
SELECT 
@ip = @ip +'.'+ CONVERT(varchar(3), @iip/ID), @iip = @iip%ID
FROM(   
SELECT ID = CONVERT(BIGINT, 1*256*256*256)   
UNION ALL SELECT 1*256*256   
UNION ALL SELECT 1*256   
UNION ALL SELECT 1 
) AS T   
RETURN(STUFF(@ip,1,1,''))   
END


---------------------------------------------------------------------------------------

;WITH cte AS
(
SELECT dbo.INET_ATON('192.168.1.2') AS iip
)
SELECT dbo.INET_NTOA(iip) AS ip, iip FROM cte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值