Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SELECT - Двойни кавички или без двойни кавички?

Отговорите и връзките относно главните и главните букви са правилни, но вашата ситуация надхвърля обикновен проблем с големи букви, както защото името на колоната ви започва с долна черта, така и защото вашият клиент очевидно обикновено крие цитата от вас.

Ако се опитате да създадете таблица с колона, наречена _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, всички препратки към нея трябва да бъдат затворени в двойни кавички, независимо от регистъра. Вашият клиент просто прави това на заден план, ако не сте го цитирали сами.

Следването на съветите, дадени от други, за избягване на идентификатори в кавички и винаги използване на имена, които са валидни без кавички, ще избегне проблеми като този.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да съхраните изображение в изданието oracle 11g express?

  2. Името на колона започва с число?

  3. Преобразувайте всеки знак в низ в ред

  4. искам да приема въвеждане от потребителя в PL SQL и да го предам на процедура, покажете ми проста програма за това?

  5. Бих искал да мигрирам Oralce DB към Amazon Redshift с AWS SCT