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 ;