数据表里的time是文本类型,在sql查询数据的时候把time按:PREP.,1,2,3,4,5……的顺序排列
我这样写的
SELECT * FROM INPUT_DESIGN
where state = 1
order by
decode(TIME,'PREP.',0,TIME*1)
time是文本类型,time*1报错无效的数字
因为有文本呀。*1肯定要报错。你是什么数据库?或者在帆软中处理?
oracel里面有很多正则函数。可以只提取数字。。
select REGEXP_REPLACE('mak是123号234','[^0-9]','')*1 as ttn from dual
union all
select nvl(REGEXP_REPLACE('mak','[^0-9]',''),0)*1 as ttn from dual
帆软中处理就直接
joinarray(GREPARRAY(split(a2,""),REGEXP(item, "[0-9.]")),"")*1 然后你通过这一列的数据排序
oracle吧,用这个lpad两位补0
order语句改一下呢,嘎嘎,order by decode(TIME,'PREP.','00',lpad(TIME,2,'0'))