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,','))