To nie jest dobra praktyka. Dane liczbowe powinny być przechowywane w NUMBER kolumnach. Powód jest prosty:jeśli nie wymusimy silnego typu danych, możemy znaleźć dane nieliczbowe w naszej kolumnie varchar2. Gdyby tak się stało, filtr taki jak ten
where to_number(field1) = 23
nie powiedzie się z ORA-01722: invalid number
.
Nie mogę na pewno powiedzieć, co dzieje się w twoim scenariuszu, ponieważ nie rozumiem, dlaczego pozornie nieznaczne zmiany w filtrach identyfikatora wpłynęły na powodzenie zapytania. Pouczające byłoby zapoznanie się z planami wykonania dla różnych wersji zapytań. Ale myślę, że jest to bardziej prawdopodobne, że będzie to problem z twoimi danymi niż błąd w SGA.