查询一个字段的最大值可以用
  SELECT ISNULL(MAX(Code),0) Code FROM DocTable, 但结果不是我想要的.
比如现在[Code]字段如果有'999'和'1000'二个值, 我希望结果是返回'1000', 但查询返回的是'999', 而且字段可能会包含字母比如'X123', 不能转换成Int或其他数值类型来查询.请问如何做才能返回正确的最大值呢.

解决方案 »

  1.   

    --try
    SELECT MAX(cast(Code as bigint)) Code FROM DocTable where isdate(code)=1
      

  2.   

    SELECT ISNULL(MAX(cast(Code as int)),0) Code FROM DocTable
      

  3.   

    SELECT ISNULL(MAX(cast(Code as int)),0) Code FROM DocTable
    WHERE ISNUMERIC(CODE)=1
      

  4.   

    SELECT
    ISNULL(MAX(cast(Code as int)),0) Code
    FROM
    DocTable
      

  5.   

    int=>bigint,不然很容易发生溢出错误的例如:20050921003SELECT ISNULL(MAX(cast(Code as bigint)),0) Code FROM DocTable
    WHERE ISNUMERIC(CODE)=1
      

  6.   

    SELECT max(case when isNumeric(Code)=0 then 0 else cast(Code as bigint) end) code FROM DocTable
      

  7.   

    带字母的需要比较么?X123和1000谁大?,如果带字母的可以排除不考虑,那LS的答案就可以。