请问我有一个字段为流水编号,字符型。
ad0001op
aa0002dd
ad0003dp
ae0005dd
ad0006yu中间第3位到第6位为流水编号。
请问如何取到其中的最大值,当中少了0004,不是笔误,是被删除了 。
我要取其中的最大值,然后+1自动生成流水号。最好不要存贮过程,我看不懂。谢谢。

解决方案 »

  1.   

    select max(id) from (select substr(id,3,4) as id from table1)
      

  2.   

    Oracle语法:select max(substr(no,3,4)) maxno from table
      

  3.   

    Oracle语法:select max(substr(no,3,4)) maxno from table
      

  4.   

    不好意思,我用的是access以后可能用sql server
    我要这2种的语法。
    测试通过就给分。
      

  5.   

    select max(right((left(字段,6),4)) from 表名
    在sql server中,我想在access中也应该一样
      

  6.   

    SELECT Max(Mid(表.字段,3,4)) AS MaxID FROM 表;
    Access 2000调试通过
    :)
      

  7.   

    一般情况下,vb适用的函数在office里面都好用!
      

  8.   

    不过,mid在sql server 中没有个函数
      

  9.   

    SELECT Max(Mid(表.字段,3,4)) AS MaxID FROM 表
    测试没通过。
    谁再来试试啊。字段为字符型
      

  10.   

    我和mid都通不过,就是你的表里的数据有问题,有的数据在3---6位不是数字,将他手动删除就没问题了,在有就是你的往下的程序有问题,在这一步上不会有其他的问题,你自己在好好看看,
      

  11.   

    看了以上的种种用法,感觉当数据量比较大时会很慢,因为每次都要进行TABLE SCAN ,无法利用索引
      

  12.   

    你要是不通过,最好把原程序贴出来,
    SELECT Max(Mid(表.字段,3,4)) AS MaxID FROM 表;
    这条语句是在Access2000里面建立一个查询,通过测试通过的,绝对没有问题
    我想可能是你的程序问题吧!to : mbzdh(一天一个进步) 
    在SQL Server2000中使用的函数是
    substring,相关说明如下:SUBSTRING
    返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 
    语法
    SUBSTRING ( expression , start , length ) 
    参数
    expression
    是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。
    start
    是一个整数,指定子串的开始位置。
    length
    是一个整数,指定子串的长度(要返回的字符数或字节数)。
    说明  由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。