Odpowiedzi i linki dotyczące wielkości liter są poprawne, ale Twoja sytuacja wykracza nieco poza prosty przypadek, zarówno dlatego, że nazwa Twojej kolumny zaczyna się od podkreślenia, jak i dlatego, że Twój klient najwyraźniej zwykle ukrywa przed Tobą cytat.
Jeśli próbowałeś utworzyć tabelę z kolumną o nazwie _id
, bez cytowania, otrzymasz błąd „ORA-00911:nieprawidłowy znak”, którego tekst przyczyny mówi „identyfikatory nie mogą zaczynać się od żadnego znaku ASCII innego niż litery i cyfry”; co w rzeczywistości jest również błędne, ponieważ nie może również zaczynać się od liczby (na przykład 0_id
daje „ORA-00904::nieprawidłowy identyfikator”). Potwierdzają to zasady nazewnictwa obiektów bazy danych :
Wygląda więc na to, że Aqua Data Studio postępuje zgodnie z konwencją polegającą na umieszczeniu w podwójnych cudzysłowach wersji nazwy obiektu pisanej wielkimi literami, co jest praktyką wspomnianą w jednym z powiązanych postów.
Z tego, co pokazałeś, select _id from ...
zostaje przekazany do Oracle jako select "_ID" from ...
, co jest w porządku, jeśli nazwa kolumny została utworzona jako "_ID"
. Wygląda na to, że tak jest w przypadku table1
, ale table2
został utworzony jako "_id"
- tak, że niezgodność wielkości liter generuje prawidłowe ORA-00904, które widzisz.
Twój klient nie modyfikuje nazwy kolumny, która jest już ujęta w cudzysłów, więc select "_id" from ...
jest przekazywany do Oracle w stanie, w jakim jest, i działa dobrze dla table2
(ale odwrotnie, nie powiedzie się dla table1
).
Oracle wymaga, aby nazwa była ujęta w podwójne cudzysłowy, jeśli nie jest zgodna z regułami dla niecytowanych identyfikatorów i jeśli została utworzona w cudzysłowie - chyba że oryginalna wartość w cudzysłowie i tak była prawidłowa, tj. jest zgodna z regułami niecytowanymi i została wpisana wielkimi literami. Ponieważ nazwa Twojej kolumny zaczyna się od podkreślenia, w przypadku Oracle wszystkie odniesienia do niej muszą być ujęte w cudzysłów, niezależnie od wielkości liter. Twój klient po prostu robi to w tle, jeśli sam tego nie cytowałeś.
Postępując zgodnie z radami innych, aby unikać cytowanych identyfikatorów i zawsze używać nazw, które są prawidłowe, nie cytowane, pozwoliłoby uniknąć takich problemów.