I have a table with following set of data
ID (VARCHAR2 field)
D001
D002
D010
D0012
I use max() in this field.
Sele
SELECT *
FROM <TABLE_NAME>
ORDER BY CAST( ID AS DECIMAL( 10, 3 ) ) DESC
below code is working for me as per your expectation
select max(to_number(regexp_substr(id, '\d+'))) id from <yourtable>;
This will surely work.
select MAX(CAST(REPLACE(REPLACE(ID, 'D', ''), '', '') as int)) from <table-name>
First Varchar need to Casted as int to select as MAX. Use below query:
select max(CAST(ID as signed)) as max_id from <table-name>;
You get D010 because alphabetically, D010 comes after D0012 or said another way, D01 comes after D00 and therefore anything that is D01x comes after anything that starts D00x.
this should work
Select MAX(ID) from table where IsNumeric(ID) = 1 ;