我在给自己单位做个办公系统玩玩
其中包括IP,以及MAC地址的信息 楼下有80多台机器
记录IP的IpAddr字段是字符串型 192.168.80.15,192.168.80.11,192.168.80.114 ...
如果我使用
-
SQL code
-
select * from IpInfo order by IpAddr asc
那么排序就是
192.168.80.11
192.168.80.114
192.168.80.15
如何才能正确的排序呢
1.
SQL codeselect * from ipinfo order by cast(right(ipaddr,charindex('.',reverse(ipaddr))-1) as int) 2.
给你一个函数(将ip格式化为010.000.000.001的格式):
CREATE FUNCTION dbo.f_1(@str varchar(8000),@c varchar(10))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @s varchar(8000),@ret varchar(8000)
SET @s=LTRIM(RTRIM(@str))
SET @ret=''
WHILE CHARINDEX(@c,@s)>0
BEGIN
SET @ret=@ret+RIGHT('000'+LEFT(@s,CHARINDEX(@c,@s)-1),3)
SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(@c,@s))
END
SET @ret=@ret+RIGHT('000'+@s,3)
RETURN(@ret)
END
GO
--调用:
select * from ipinfo order by dbo.f_1(ipaddr,'.')
3.
SQL codeORDER BY CAST ( right (IpAddr, len (IpAddr) - 11 ) AS int ) -- 假定前面都一样192.168.80.