我相实现 看看1是否存在于(1,2,3,4)这些数字序列里面
是这样作的 select * where 1 in (1,2,3,4)
但是现在我有另外一种情况
想知道序列(1,2)是否都存在于序列 (1,2,3,4)中
还有就是是否有其中一个存在于(1,2,3,4)序列中,

解决方案 »

  1.   

    where 1 in (1,2,3,4) or 2 in (1,2,3,4)
      

  2.   

    select * where charindex(',1,2,',',1,2,3,4,') > 0
      

  3.   

    这种匹配不能用 in 操作来实现。借助 exists/not exists 这样的语句可以实现其中的某些功能。
      

  4.   

    select * where 1 in (1,2,3,4) and 2 in (1,2,3,4)?
      

  5.   

    select * where 1 in (****) or 2 in (****)
      

  6.   

    SELECT *
    FROM stores
    WHERE (1 IN (1, 2, 3, 4)) AND (2 IN (1, 2, 3, 4))SELECT *
    FROM stores
    WHERE (1 IN (1, 2, 3, 4)) or (2 IN (1, 2, 3, 4))
      

  7.   

    where 1 or 2 in (1,2,3,4)
      

  8.   

    create  function F_split(
                    @s varchar(8000),          --包含多个数据项的字符串
                    @pos int,                 --要获取的数据项的位置
                    @split varchar(10)        --数据分隔符
    )RETURNS varchar(100)
    AS
    BEGIN
        IF @s IS NULL RETURN(NULL)
        DECLARE @splitlen int                --分隔符长度
        SELECT @splitlen=LEN(@split+'a')-2
        WHILE @pos>1 AND charindex(@split,@s+@split)>0
            SELECT @pos=@pos-1,
                @s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')
        RETURN(nullif(left(@s,charindex(@split,@s+@split)-1),''))
    END
    GO--declare @s varchar(10)
    set @s = '1,2'
    select *
    from ta
    where cast(dbo.F_split(@s,',',1) as int) in (1,2,3,4)
        or cast(dbo.F_split(@s,',',2) as int) in (1,2,3,4)
      

  9.   

    感谢大家的关注,这些方法我也想过,但是要考虑到前面的(1,2)序列并非是固定的,用拆分字符的方式不太好,一直用OR 或者 AND连接也不满意请大家继续发表意见,谢谢