Current state of INTEGER vs NUMBER in Oracle
The BLOG

The logic behind that post is so ludicrous that it deserves a sarcastic answer.


  Oracle does the "is it an integer?" check while it is waiting for the
  I/O call to the disk to return the data it needs to validate the
  Primary Key constraint.
  
  I believe this Performance Enhancements was implemented back in Oracle Version 2.


In actuality, the number of clock-cycles needed to perform such check is so insignificant that it is easily hidden within the noise of normal operations of the computer. You probably couldn't measure the performance difference even on a VAX/VMS.  (much older than "10 years")

INTEGER vs NUMBER vs PLS_INTEGER

As you have seen INTEGER is NUMBER(38,0).  There should be no measurable performance difference.

A difference can come in when you are talking about PLS_INTEGER vs NUMBER.  Most of the benchmarks I've seen that prove this to be true are computationally intensive.  Since you aren't doing Differential Equations with this value, the "performance gain" wouldn't apply to your case.

I recommend you stick with INTEGER or NUMBER(38,0)

Data Model Suggestion

The number and the flag should be in two different columns.  Feel free to use a virtual column (3rd column) to get back the original string.  I recommend that you record the original string value in a "comments/notes" like field so that the humans can search for it in case your virtual column logic does match what the human actually typed in.