例子:
select id,ip,name from table
这里的ip字段 在数据库里是一串数字 如:1449398350 (实际的ip为86.100.16.78)
我想在查询的时候就把ip字段显示为实际ip 要怎么写。 谢谢!

解决方案 »

  1.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))
    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')
      

  2.   

    select  rtrim(1449398350 /POWER(256,3))+'.'+
           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       */
           
      

  3.   

    select id,
    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