sql准确判断某个ip

问题:如图

当我执行sql要准确查找某个IP是属于哪个库室时候,我刚开始是这样写的

select * from Definition_Read_Room where HFIP like '%172.20.139.71%'

然后这样来查会出现一个问题,当查找的是172.20.139.7这个ip时候,如果HFIP里面存在

172.20.139.71或则172.20.139.712等的,会不能准确的找到该IP详细属于哪个库室,所以需要写一个sql函数,如下:

create function f_split(@c varchar(2000),@split varchar(2)) 
returns @t table(col varchar(20)) 
as 
    begin 
    
      while(charindex(@split,@c)<>0) 
        begin 
          insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) 
          set @c = stuff(@c,1,charindex(@split,@c),'') 
        end 
      insert @t(col) values (@c) 
      return 
    end 
go 

然后执行该函数,重新写sql,如下:

select * from Definition_Read_Room where '172.20.139.71' in (select * from dbo.f_split(HFIP,','))

 

posted @ 2017-05-12 17:20  我的名称很霸气  阅读(1118)  评论(0编辑  收藏  举报