Sql 查询问题!
我有一张IP数据库   
 比如   
 startip                           endip                                    local                                       city 
 ==============      =============            ===============         ====                
 211.1.151.128         211.2.209.255            日本	               NULL	 
 211.16.252.32         211.17.163.159         日本	               NULL	 
 211.160.0.0               211.160.9.22               北京市中电飞华            北京	 
 211.160.15.0            211.160.20.255         北京市中电飞华            北京	 
 211.160.160.0         211.160.165.52         上海市   中电飞华         上海   
 我用的IP是211.160.163.52 
 用的SQL语句是   select   city   from   ip   where    '211.160.163.52 '   between   startip   and   endip 
 为什么我查来查去这5个结果都是一起出来??? 
 那个错了?请高手帮忙说说!!
------解决方案--------------------剛才少判斷了前面兩個     
 declare  @t table (startip varchar(20),endip varchar(20),local varchar(20),city varchar(20)) 
 insert into @t 
                select  '211.1.151.128 ',   ' 211.2.209.255 ',     '日本 '	,     NULL	 
 union all select  '211.16.252.32 ' ,   '211.17.163.159 ' ,   '日本 '	 ,    NULL	 
 union all select  '211.160.0.0 ' ,    ' 211.160.9.22 ' ,     '北京市中电飞华 ' ,    '北京 '	 
 union all select  '211.160.15.0 ' ,   ' 211.160.20.255 ' ,   '北京市中电飞华 ' ,   ' 北京 '	 
 union all select  '211.160.160.0 ' ,   '211.160.165.52 ' ,   '上海市 中电飞华 ',    '上海 ' 
 select * from @t    
 /* 
 startip                                    endip                      local              city 
 --------------------------------------------------------------------- 
 211.1.151.128	 211.2.209.255	日本	NULL 
 211.16.252.32	211.17.163.159	日本	NULL 
 211.160.0.0	 211.160.9.22	北京市中电飞华	北京 
 211.160.15.0	 211.160.20.255	北京市中电飞华	 北京 
 211.160.160.0	211.160.165.52	上海市 中电飞华	上海 
 */   
 /* 
 create   Function StrSite(@Str varchar(2000) ,@Word varchar(20) ,@TimesNo int) 
 returns   int 
 as  
 begin  
 declare @i int,@Times int 
 declare @WordLen int 
 set @Times=0 
 set @i=1 
 set @Wordlen=len(@Word)    
 while  (@i < Len(@Str)+1 )    
 begin  
 if  substring(@Str,@i,@Wordlen)=@word 
 set   @times=@times+1 
 --print   '第 '+cast(@i as varchar(20)) + '是 :  ' +cast(@Times as varchar(20))   
 if @times=@TimesNo  
 break 
 set @i=@i+1 
 end  
 return  (@i) 
 end 
 */     
 declare @str varchar(20) 
 set @str= '211.160.163.52 ' 
 select * from @t 
 	where  cast( substring(@str,dbo.StrSite(@str, '. ',2)+1,len(@str)-dbo.StrSite(@str, '. ',2)) as float) 
 	between 
 	 cast( substring(startip,dbo.StrSite(startip, '. ',2)+1,len(startip)-dbo.StrSite(startip, '. ',2)) as float) 
 	and  
 	 cast( substring(endip,dbo.StrSite(endip, '. ',2)+1,len(endip)-dbo.StrSite(endip, '. ',2)) as float)   
 	and left(@str,dbo.StrSite(@str, '. ',2))=left(@str,dbo.StrSite(startip, '. ',2))