declare @ip varchar(50)
set @ip='10.132.217.3'
select * from tb
where charindex(','+@ip+',',','+ip_address+',')>0

解决方案 »

  1.   

    select * from table1 where patindex('%10.132.217.3%',IP_IP_ADDRESS)>0
      

  2.   

    IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE SPECIFIC_NAME = N'Split' )
    DROP FUNCTION Split
    GO 
    CREATE FUNCTION dbo.Split ( @ItemList NVARCHAR(4000), @delimiter CHAR(1) )
    RETURNS @IDTable TABLE (Item VARCHAR(50)) 
    AS 
    BEGIN 
    DECLARE @tempItemList NVARCHAR(4000) SET @tempItemList = @ItemList 
    DECLARE @i INT DECLARE @Item NVARCHAR(4000)
    SET @tempItemList = REPLACE (@tempItemList, ' ', '')
    SET @i = CHARINDEX(@delimiter, @tempItemList) 
        WHILE (LEN(@tempItemList) > 0)
    BEGIN 
    IF @i = 0 SET @Item = @tempItemList 
    ELSE SET @Item = LEFT(@tempItemList, @i - 1)
    INSERT INTO @IDTable(Item) VALUES(@Item)
    IF @i = 0 SET @tempItemList = '' 
    ELSE SET @tempItemList = RIGHT(@tempItemList, LEN(@tempItemList) - @i)
    SET @i = CHARINDEX(@delimiter, @tempItemList)
    END RETURN 
    END GO 
    CREATE PROCEDURE USP_RetrieveInformationForSelected 
    @p_selected NVARCHAR(50)
     AS
     BEGIN
     SELECT * FROM table1 WHERE "10.132.217.3" in (SELECT Item FROM split(@p_selected, ',')) 
    END
      

  3.   

    你这个能否过滤掉110.132.217.32呢
    我就要包含ip为10.132.217.3的记录,怎么包含,我不管,但是它的IP必须是10.132.217.3的
      

  4.   

    跟%...%还是有区别的。加了前后辍,这样不会取到 10.132.217.3x 或 110.132.217.3x这样的数据基本上最方便的就是charindex,patindex,like这些了。其它做法也有,不过就麻烦了,没有必要。
      

  5.   

    我想引申一下,(注 "空" 表示空字符串,但是不是null,空+字符串=字符串)
    现在是查找
    空+IP+空
    ,IP,
    ,ip
    ip,
    上面四中情况,
    可以理解为
    [,空]IP[,空]
    如果再多一种情况怎么办呢.
    [,空,1]IP[,空,1]
      

  6.   

     
    select * from table1 where IP_ADDRESS like '%10.132.217%' and IP_ADDRESS not like '%[0-9]'+'10.132.217.3%' and IP_ADDRESS not like '%10.132.217.3[0-9]%'