Sounds like you need to clean your data ;)
But if you genuinely do store alphanumeric values and want to numeric filtering, you could find all the numeric values first with a regex or similar.
Then use between on the numbers:
with rws as (
select serial_number , rownum
from tab_serial_number
where regexp_like ( serial_number, '^[0-9]+$' )
)
select * from rws
where to_number( serial_number ) between 1890 and 1891;
SERIAL_NUMBER ROWNUM
1890 1
1891 8
The rownum in the subquery is to stop the optimizer merging the conditions together. i.e. guarantee is does the regex
before to_number.