如果取到一个字符字段中存储的最大的编号(100)

  • 主题发起人 szqhebei
  • 开始时间
S

szqhebei

Unregistered / Unconfirmed
GUEST, unregistred user!
编号存在一个字符型的字段中,格式如下:2010-12345,长度不定,本来定的最大位数为-后面是五位,但现在库中有4位的,也有6位的,现在要取得最大的编号,但是数据类型为字符型的,没有想出好的办法,各位老大,看下,帮出个主意
 
根据 - 号后面的数据排序即可,数据库应该都有相关的字符串函数
 
我是根据后面的排序了,但是后面的长度不固定,有的是4位,有的是5位,排序出错
 
把前面的2010-截掉,取后面的字符转换成number,再取MAX就可以了。
 
我想把这个方法放在数据库中,哪位老大麻烦一下,帮忙写一下
 
你用的什么数据库啊?sql server 中可以这样select max(case(substring(字段名字,5,len(字段名字)-5) as int)) from 表名
 
4位前面补零再select呢
 
select substring('2010-12345',charindex('-','2010-12345') + 1,len('2010-12345'))
 
select max(case(substring(字段名字,5,len(字段名字)-5) as int)) from 表名
 
看楼上几位的都是在查询语句中嵌套函数。如果数据量大的话,这种方法是不可取的,效率实在是低下。最简单的办法,select 字段名 from 表名 where 条件 order by 编号 DESC降序排列,取第一行数据即可。如果你前面的2010是年份的话,那么条件可以这样写 编号 like '2010%' 然后在加order by 排序。如果这个表加上索引,那么效率会更高。应该比较在查询中使用函数效率高一点。没经过测试,只是理论上来说。
 
顶部