假如我有一个表。表里面有一列。是成绩。那么这个成绩里面有数字。但是也有文字如成绩
80
75
65.5
作弊
95
缺考
null
0
要补考 
像这样的数据我如何写语句得到除文字以外的最大成绩与最小成绩?把null与汉字都要去掉。谢谢
最大的是 95
最小的是 0

解决方案 »

  1.   

    select max(成绩),min(成绩)
    from tb
    where ISNUMERIC(成绩)=1
      

  2.   

    -------------------------------------
    --  Author : liangCK 梁爱兰
    --  Comment: 小梁 爱 兰儿
    --  Date   : 2009-11-02 19:14:38
    -------------------------------------
     
    --> 生成测试数据: @tb
    DECLARE @tb TABLE (成绩 varchar(6))
    INSERT INTO @tb
    SELECT '80' UNION ALL
    SELECT '75' UNION ALL
    SELECT '65.5' UNION ALL
    SELECT '作弊' UNION ALL
    SELECT '95' UNION ALL
    SELECT '缺考' UNION ALL
    SELECT null UNION ALL
    SELECT '0' UNION ALL
    SELECT '要补考'--SQL查询如下:select min(成绩),max(成绩) from @tb where isnumeric(成绩)=1/*
    ------ ------
    0      95(1 行受影响)
    */
      

  3.   

    -------------------------------------
    --  Author : liangCK 梁爱兰
    --  Comment: 小梁 爱 兰儿
    --  Date   : 2009-11-02 19:14:38
    -------------------------------------
     
    --> 生成测试数据: @tb
    DECLARE @tb TABLE (成绩 varchar(6))
    INSERT INTO @tb
    SELECT '80' UNION ALL
    SELECT '75' UNION ALL
    SELECT '65.5' UNION ALL
    SELECT '作弊' UNION ALL
    SELECT '95' UNION ALL
    SELECT '缺考' UNION ALL
    SELECT null UNION ALL
    SELECT '0' UNION ALL
    SELECT '要补考'--SQL查询如下:select flag='最小数',成绩=min(成绩)from @tb where isnumeric(成绩)=1
    union all
    select '最大数',max(成绩) from @tb where isnumeric(成绩)=1/*
    flag   成绩
    ------ ------
    最小数    0
    最大数    95(2 行受影响)
    */