关于SQL语句wehre条件的一个问题请教

来源:百度知道 编辑:UC知道 时间:2024/05/31 05:08:56
我有个数据库表是储存的IP地址,都是的标准的IP地址,如220.220.222.12
UserIP是获取访问者的IP。我只取前3段:UserIP=220.220.222
select * from table where ip=UserIP
怎样也是只取数据库中IP字段的前3段来匹配呢?

用模糊查询,主要目的是连接出如下sql:
select * from table where ip like 'UserIP的值%'; 因此:

SqlServer:
select * from table where ip like + UserIP + '%';

Oracle:
select * from table where ip like || UserIP || '%';

前面两楼都是在误导楼主!

直接查询当然是:
select * from table where ip like '220.220.222%'

如果用变量,则:
declare @sqlstr nvarchar(1000), @UserIP nvarchar(1000)
set @UserIP='220.220.222' --这里赋不同的值
set @sqlstr='select * from table where ip LIKE ' + @UserIP + '%'
exec sp_executesql @sqlstr

select * from table where left(IP,len(IP)-charindex('.',reverse(IP) ) ) = UserIP

使用函数:
Reverse 返回字符表达式的反转。
Charindex 返回字符串中指定表达式的起始位置。
Len 返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。
Left 返回从字符串左边开始指定个数的字符。

select * from table where ip like '220.220.222.%'即可

楼上的方法也正确,不过不是很好写,呵呵

select * from table where ip like '"+Use