Questa non è una buona pratica. I dati numerici devono essere conservati in NUMBER colonne. Il motivo è semplice:se non imponiamo un tipo di dati forte, potremmo trovarci con dati non numerici nella nostra colonna varchar2. Se ciò dovesse accadere, allora un filtro come questo
where to_number(field1) = 23
fallirebbe con ORA-01722: invalid number
.
Non posso dire con certezza che questo è ciò che sta accadendo nel tuo scenario, perché non capisco perché modifiche apparentemente insignificanti nei filtri di ID abbiano cambiato il successo della query. Sarebbe istruttivo vedere i piani di esecuzione per le diverse versioni delle query. Ma penso che sia più probabile che sia un problema con i tuoi dati che un bug nell'SGA.