例子:
select id,ip,name from table
这里的ip字段 在数据库里是一串数字 如:1449398350 (实际的ip为86.100.16.78)
我想在查询的时候就把ip字段显示为实际ip 要怎么写。 谢谢!
select id,ip,name from table
这里的ip字段 在数据库里是一串数字 如:1449398350 (实际的ip为86.100.16.78)
我想在查询的时候就把ip字段显示为实际ip 要怎么写。 谢谢!
drop function [dbo].[f_IP2Int]
GO--1. 字符串IP地址转换成IP数值函数。--其实不懂
CREATE FUNCTION dbo.f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID--这里这句乘个ID什么意思啊?
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a--这表提供的ID是干嘛的啊
RETURN(@re)
END
GO
select dbo.f_IP2Int('2132.23132.12.1')
rtrim((1449398350 %POWER(256,3))/POWER(256,2))+'.'+
rtrim((1449398350 %POWER(256,3))%POWER(256,2)/256)+'.'+
rtrim((1449398350 %POWER(256,3))%POWER(256,2)%256)
/*
86.100.16.78 */
ip=rtrim(ip /POWER(256,3))+'.'+
rtrim((ip %POWER(256,3))/POWER(256,2))+'.'+
rtrim((ip%POWER(256,3))%POWER(256,2)/256)+'.'+
rtrim((ip %POWER(256,3))%POWER(256,2)%256),
name
from table