max与min可以对字符型的数据进行求最大值跟最小值。
现在有一列num(nvarchar(10))如下:
num
5
@
4为什么@是最大值呢??

解决方案 »

  1.   

    运行一下:
    select ascii('@'),ascii('5')
    你就会知道了.
      

  2.   

    SELECT ASCII('@'),ASCII('5'),ASCII('4')SELECT UNICODE(N'@'),UNICODE(N'5'),UNICODE(4)/*
                            
    ----------- ----------- -----------
    64          53          52(1 行受影响)                        
    ----------- ----------- -----------
    64          53          52(1 行受影响)*/
      

  3.   

    select ascii('5'), ascii('@'), ascii('4') /*
    ----------- ----------- -----------
    53          64          52(1 行受影响)
    */64当然是最大的
      

  4.   

    --> liangCK小梁 于2008-10-17
    --> 生成测试数据: @T
    DECLARE @T TABLE (num VARCHAR(2))
    INSERT INTO @T
    SELECT '5' UNION ALL
    SELECT '@' UNION ALL
    SELECT '4'--SQL查询如下:SELECT MIN(num),MAX(num)
    FROM @T
    WHERE ISNUMERIC(num)=1/*
         
    ---- ----
    4    5(1 行受影响)
    */
      

  5.   

    你可以这样查:
    select min(num) from tb where ISNUMERIC(num)<>0
    select max(num) from tb where ISNUMERIC(num)<>0