可以写一个function,把字母都过滤掉,只剩下数字,然后就可以根据数字排序了
CREATE OR REPLACE FUNCTION GETNUMBER(STR IN VARCHAR2) RETURN VARCHAR2 IS
V_TEMP VARCHAR2(200);
V_RETURN VARCHAR2(200);
IDX NUMBER := 1;
BEGIN
WHILE (IDX <= LENGTH(STR)) LOOP
V_TEMP := SUBSTR(STR, IDX, 1);
IF (ASCII(UPPER(V_TEMP)) >= 48 AND ASCII(UPPER(V_TEMP)) <= 57) THEN
V_RETURN := V_RETURN || V_TEMP;
END IF;
IDX := IDX + 1;
END LOOP;
RETURN V_RETURN;
END GETNUMBER;
你可以选择先全部取出来,然后在java中进行正则匹配将非数字的去除,最后,将剩下的转换为int类型。取最大值。
select max(字段名) from 表名;在我这他是跟好数字的大小取的最大值,不是先根据字母,你的字段的数字与字母出现的间隔有规律没有,有的话就用substr 截取 在max();
select max(to_number(col1))
from table
where nvl2(translate(col1,'\0123456789','\'),0,1)=1