declare @Fno varchar(15)
set @Fno='003'
select * from Utable
where  left(流水号,3)<=@Fno and @Fno <=Right(流水号,3)

解决方案 »

  1.   

    select * from where left(流水号,3) in ('002','003','088')
      

  2.   

    哦,误会你的意思了。不好意思啊。
    我支持winding的方法,不过这个方法有个弊端,就是没有办法将三个条件的查询结果和在一起。你试着做个存储过程。将要查询的流水号组合在一起,做为一个字符串传入。然后使用UNION ALL进行处理就应该可以了。呵呵~~~个人看法,呵呵~~~~
      

  3.   

    不太理解。是这样吗?select * from Utable
    where  left(流水号,3)=‘002’and Substring(流水号,5,3)='003'
           and substring(流水号,9,3)='088'因为你说流水号最大是010.
      

  4.   

    用个自定义函数来检查数据就行了.--创建自定义函数,检查某个流水号是否在记录内
    create function fchk(@str varchar(2000),@bh varchar(50))
    returns bit
    begin
    declare @tb table(str1 varchar(2000),str2 varchar(2000))
    declare @i int,@str1 varchar(2000),@str2 varchar(2000)
    declare @re bitselect @i=1,@str=@str+','
    while @str<>''
    begin
    if substring(@str,@i,1)='-'
    select @str1=left(@str,@i-1)
    ,@str=substring(@str,@i+1,2000)
    ,@i=1
    else
    if substring(@str,@i,1)=','
    begin
    select @str2=left(@str,@i-1)
    ,@str=substring(@str,@i+1,2000)
    ,@i=1
    if @str1 is null set @str1=@str2
    insert into @tb values(@str1,@str2)
    set @str1=null
    end
    set @i=@i+1
    end
    if exists(select 1 from @tb where @bh between str1 and str2)
    set @re=1
    else
    set @re=0
    return(@re)
    end
    go
      

  5.   

    调用上面的自定义来实现你的查询要求select * from 你的表 where dbo.fchk(流水号,'002')=1 or dbo.fchk(流水号,'003')=1 or dbo.fchk(流水号,'088')=1
      

  6.   

    zjcxc(邹建) 双星大将你好,估计你的方法可行,今天没时间测了,待明天测成功后散分.
          感谢各位高手!
      

  7.   

    zjcxc(邹建) 60分,liuyun2003(流云——小小菜鸟) 10分,hjhing(winding) ( ) 10分