Oracle
 sql >> Database >  >> RDS >> Oracle

Ottenere uno strano problema con la funzione TO_NUMBER in Oracle

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.