Отговорите и връзките относно главните и главните букви са правилни, но вашата ситуация надхвърля обикновен проблем с големи букви, както защото името на колоната ви започва с долна черта, така и защото вашият клиент очевидно обикновено крие цитата от вас.
Ако се опитате да създадете таблица с колона, наречена _id
, без да го цитирате, тогава ще получите грешка „ORA-00911:невалиден знак“, чийто текст на причината гласи „идентификаторите не могат да започват с ASCII знак, различен от букви и цифри“; което всъщност също е грешно, тъй като също не може да започва с число (например 0_id
дава „ORA-00904::невалиден идентификатор“). Това е подкрепено от правилата за именуване на обекти в базата данни :
Така че изглежда, че Aqua Data Studio следва конвенция за затваряне на версията с главни букви на името на обекта, което предоставяте, в двойни кавички, практика, спомената в една от свързаните публикации.
От това, което сте показали, select _id from ...
се предава на Oracle като select "_ID" from ...
, което е добре, ако името на колоната е създадено като "_ID"
. Изглежда, че случаят е такъв за table1
, но table2
е създаден като "_id"
- така че несъответствието между главни и малки букви генерира легитимния ORA-00904, който виждате.
Вашият клиент не променя име на колона, което вече е оградено в двойни кавички, така че select "_id" from ...
се предава на Oracle такъв, какъвто е, и работи добре за table2
(но, обратно, ще се провали за table1
).
Oracle изисква името да бъде оградено в двойни кавички, ако не спазва правилата за идентификатори без кавички и ако е създадено като кавички - освен ако първоначалната цитирана стойност все пак е валидна, т.е. следва правилата без кавички и е въведена с главни букви. Тъй като името на вашата колона започва с долна черта, що се отнася до Oracle, всички препратки към нея трябва да бъдат затворени в двойни кавички, независимо от регистъра. Вашият клиент просто прави това на заден план, ако не сте го цитирали сами.
Следването на съветите, дадени от други, за избягване на идентификатори в кавички и винаги използване на имена, които са валидни без кавички, ще избегне проблеми като този.