把基本尺寸拆开成两个属性
一个是下界low,一个是上界high
select * from table where low>4 and high>4

解决方案 »

  1.   

    select * from table where low<4 and high>4
      

  2.   

    select *,left([基本尺寸],charindex('-',[基本尺寸]) - 1) as mixTest,
    right([基本尺寸],len([基本尺寸])-charindex('-',[基本尺寸])) as maxTest from TableName where mixTest<=4 and maxTest>=4
      

  3.   

    用SQL的字符串处理函数:
    left([基本尺寸],charindex('-',[基本尺寸]) - 1)
    right([基本尺寸],len([基本尺寸])-charindex('-',[基本尺寸]))
      

  4.   

    楼上的查询应该可以实现,不过建议楼主还是采纳closetome的意见,把基本尺寸拆成上下界来做,那样比较合理
      

  5.   

    select 基本尺寸,表面粗糙度,圆轴度,同轴度,平行度
    from #t
    where  4>=cast(left(基本尺寸,1,charindex('-',基本尺寸)-1) as int)
       and 4<=cast(right(基本尺寸,len(基本尺寸)-charindex('-',基本尺寸)) as int)
      

  6.   

    借助自建函数和临时表--自建分割字符串的函数create  FUNCTION dbo.f_splitSTR(
    @s varchar(8000),   --要分拆的字符串
    @split varchar(10), --数据分隔符
    @pos int            -- 取第几个
    )RETURNS varchar(100)
    AS
    BEGINDECLARE
     @splitlen int,
     @re varchar(100)SET @splitlen=LEN(@split+'a') - 2WHILE CHARINDEX(@split,@s) > 0 AND @pos > 0
    SELECT
    @re = LEFT(@s,CHARINDEX(@split,@s)-1),
    @s=STUFF(@s,1,CHARINDEX(@split, @s)+@splitlen,''),
    @pos = @pos - 1
    RETURN(CASE 
    WHEN @pos = 0 THEN @re 
    WHEN @pos = 1 THEN @s
    ELSE NULL END)
    ENDGO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO--命令已成功完成。--借助临时表select  tt.* ,dbo.f_splitSTR(tt.基本尺寸,'-',1) as myStart,dbo.f_splitSTR(tt.基本尺寸,'-',2) as myEnd into #myTable from tt --从临时表获取数据select * from #myTable where mystart>=8 and myend<=25--(所影响的行数为 2 行)--备注:把*改为你要查询的字段;
      

  7.   

    create table #t
    (
       基本尺寸 varchar(30),
       表面粗糙度 int,
       圆轴度 int,
       同轴度 int,
       平行度 int
    )
    goinsert into #t select
    '3-10',        5,             6,       7,        8 union all select
    '11-21',       10,            11,      12,       13 union all select
    '22-25',       14,            15,      16,       17 goselect 基本尺寸,表面粗糙度,圆轴度,同轴度,平行度
    from #t
    where  4>=cast(left(基本尺寸,charindex('-',基本尺寸)-1) as int)
       and 4<=cast(right(基本尺寸,len(基本尺寸)-charindex('-',基本尺寸)) as int)
    go
    drop table #t/*
    (3 row(s) affected)基本尺寸                           表面粗糙度       圆轴度         同轴度         平行度         
    ------------------------------ ----------- ----------- ----------- ----------- 
    3-10                           5           6           7           8(1 row(s) affected)
    */
      

  8.   

    他们的意思是你最好把table改成这样的
    下界 上界 ......
    3    10
    11   21
    22   25
    其他的表项不变
    然后再查询
      

  9.   

    自建函数不变(见上面的回复)--借助临时表select  tt.* ,dbo.f_splitSTR(tt.基本尺寸,'-',1) as myStart,dbo.f_splitSTR(tt.基本尺寸,'-',2) as myEnd into #myTable from tt --从临时表获取数据select 基本尺寸,表面粗糙度,圆轴度,同轴度,平行度 from #myTable where @myQuery>=mystart and @myQuery<=myend
    --@myQuery就是你输入的数据--删除临时表
    drop table #myTable
      

  10.   

    他们的意思是你最好把table改成这样的
    下界 上界 ......
    3    10
    11   21
    22   25
    其他的表项不变
    然后再查询
    -------------------------
    对头select * from 表名 where 4(要查询的数) between 下界 and 下界
      

  11.   

    哈哈,强,
    楼上都这么多答案
    本人就不写了,
    接分
    我看到楼上有的用了好长好长的 sql
    其它只要在where条件后面 写个sql用些取值函数就可以了
      

  12.   

    还是不会用啊,在C#WINFORM中
    有一个TEXTBOX1,一个COMBOBOX1,一个TEXTBOX2,在TEXTBOX1中输入基本尺寸,COMBOBOX1中会提示输入表面粗糙度等,然后在TEXTBOX2中就会显示出结果来.
    如输入基本尺寸3-10中任意一个数的时候,选择表面粗糙度,那么在TEXTBOX2中就会显示5.
    怎么实现,哥哥们再讲细一点咯~~~~~~~~~