Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle SELECT - डबल कोट्स या कोई डबल कोट्स नहीं?

केसिंग के बारे में उत्तर और लिंक सही हैं, लेकिन आपकी स्थिति एक साधारण केस इश्यू से थोड़ा आगे जाती है, क्योंकि आपके कॉलम का नाम अंडरस्कोर से शुरू हुआ था और क्योंकि आपका क्लाइंट आमतौर पर आपसे उद्धरण छिपा रहा है।

यदि आपने _id . नामक कॉलम वाली तालिका बनाने का प्रयास किया है , इसे उद्धृत किए बिना, आपको एक 'ORA-00911:अमान्य वर्ण' त्रुटि मिलेगी, जिसका कारण पाठ यह कहता है कि 'पहचानकर्ता अक्षरों और संख्याओं के अलावा किसी भी ASCII वर्ण से शुरू नहीं हो सकते हैं'; जो वास्तव में गलत भी है क्योंकि यह किसी संख्या से शुरू नहीं हो सकता (उदाहरण के लिए, 0_id 'ORA-00904::अमान्य पहचानकर्ता' देता है)। यह डेटाबेस ऑब्जेक्ट नेमिंग नियमों :

तो ऐसा लगता है कि एक्वा डेटा स्टूडियो आपके द्वारा दिए गए ऑब्जेक्ट नाम के अपर-केस संस्करण को डबल-कोट्स में संलग्न करने की परंपरा का पालन कर रहा है, एक लिंक की गई पोस्ट में उल्लिखित एक अभ्यास।

आपने जो दिखाया है उसमें से select _id from ... Oracle को select "_ID" from ... . के रूप में पास हो जाता है , जो ठीक है अगर कॉलम नाम "_ID" . के रूप में बनाया गया था . ऐसा प्रतीत होता है कि table1 . के मामले में ऐसा ही है , लेकिन table2 "_id" . के रूप में बनाया गया था - ताकि मामला बेमेल आपके द्वारा देखे जा रहे वैध ORA-00904 को उत्पन्न करे।

आपका क्लाइंट एक कॉलम नाम को संशोधित नहीं कर रहा है जो पहले से ही दोहरे उद्धरणों में संलग्न है, इसलिए select "_id" from ... ओरेकल के माध्यम से पारित किया गया है, और table2 . के लिए ठीक काम करता है (लेकिन, इसके विपरीत, table1 . के लिए विफल हो जाएगा )।

ओरेकल को नाम को दोहरे उद्धरण चिह्नों में संलग्न करने की आवश्यकता होती है यदि यह निर्विवाद पहचानकर्ताओं के लिए नियमों का पालन नहीं करता है, और यदि इसे उद्धृत के रूप में बनाया गया था - जब तक कि मूल उद्धृत मूल्य वैसे भी मान्य नहीं था, अर्थात अयोग्य नियमों का पालन करता है और अपरकेस में दर्ज किया गया था। चूंकि आपका कॉलम नाम अंडरस्कोर से शुरू होता है, जहां तक ​​​​ओरेकल का संबंध है, इसके सभी संदर्भों को मामले की परवाह किए बिना डबल-कोट्स में संलग्न किया जाना है। यदि आपने इसे स्वयं उद्धृत नहीं किया है, तो आपका क्लाइंट केवल पृष्ठभूमि में ऐसा कर रहा है।

अन्य लोगों ने उद्धृत पहचानकर्ताओं से बचने और हमेशा ऐसे नामों का उपयोग करने के लिए दी गई सलाह का पालन किया जो वैध नहीं हैं, इस तरह के मुद्दों से बचेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरैकल में वर्तमान दिनांक और समय वापस करने के लिए एक फ़ंक्शन बनाएं

  2. ओरेकल डेटाबेस में बड़ी सामग्री दर्ज करें

  3. SQL में स्तंभ जानकारी (समग्र कुंजी) प्राप्त करना

  4. वीएस 2013 में वर्तमान ओरेकल ओडीएसी कनेक्टिविटी क्यों दिखाई नहीं दे रही है?

  5. Oracle PL/SQL:डायनेमिक SQL उदाहरण तत्काल निष्पादित करें का उपयोग कर