मैं ओरेकल में एक आरक्षित शब्द कैसे बच सकता हूं?


134

TSQL में मैं Select [table] from tablename"तालिका" नामक एक कॉलम का चयन करने के लिए कुछ का उपयोग कर सकता हूं ।

मैं यह कैसे oracle में आरक्षित शब्दों के लिए कर सकता हूँ?

संपादित करें: मैंने वर्ग ब्रेसिज़, दोहरे उद्धरण चिह्नों, एकल उद्धरणों और बैकक्वाट्स की कोशिश की है, वे काम नहीं करते ...

एक और स्पष्टीकरण के रूप में, मेरे पास एक कॉलम है जिसे किसी ने टिप्पणी नाम दिया है। के रूप में यह एक आरक्षित शब्द है ओरेकल एक wobbly को इसके साथ चयन करने की कोशिश कर रहा है, इसकी विफलता जब क्वेरी पार्स कर रही है। मैंने टैबलेन से "टिप्पणी" का चयन करने की कोशिश की है, लेकिन यह काम नहीं किया। मैं मामले की जांच करूंगा और वापस आऊंगा


जवाबों:


195

त्वरित खोज से, ओरेकल दोहरे उद्धरण चिह्नों ( "जैसे, उदाहरण के लिए "table") का उपयोग करता प्रतीत होता है और स्पष्ट रूप से सही मामले की आवश्यकता होती है- किसी के लिए भी, रुचि रखने वाले MySQL के लिए बैकटिक्स (`) का उपयोग करने के लिए चूकता है, जब संगतता के लिए दोहरे उद्धरणों का उपयोग करने के लिए सेट किया जाता है।


2
मैंने आपको नीचे चिह्नित किया क्योंकि मैंने दोहरे उद्धरण चिह्नों का उपयोग करके शब्द से बचने की कोशिश की और यह काम नहीं किया।
स्पैन

13
डिफ़ॉल्ट रूप से, ओरेकल किसी भी पहचानकर्ता को ऊपर ले जाएगा। इसलिए यदि आपको या तो कम मामले के पात्रों या विशेष पात्रों की आवश्यकता है, या पहचानकर्ता एक ओरेकल आरक्षित शब्द है, तो इसे दोहरे उद्धरण चिह्नों में संलग्न करने की आवश्यकता है। चूंकि दोहरे उद्धरण-चिह्न मामले को सुरक्षित रखते हैं, इसलिए पहचानकर्ता को भी सही मामला होना चाहिए।
मेट्रो

मैंने SQL डेवलपर v4 का उपयोग करके एक फ़ील्ड "उपनाम" के साथ एक तालिका बनाई है जो Oracle 11g रिलीज़ 2 एक्सप्रेस डेटाबेस को मार रहा है। मेरे चयन ने तब काम किया जब मैंने उपनाम के बजाय "ALIAS" लिखा।
ब्रोकन_विंडो

ट्रिगर के लिए काम नहीं कर रहा है, ORA-30507 (उदाहरण के लिए DATASEASE) का उल्लंघन करने वाले नाम के साथ एक तालिका के लिए एक ट्रिगर बनाने का प्रयास करें।
फ्लेवू

सभी अपरकेस "टेबल" में इसे आज़माएं।
RSHAP

34

ओरेकल सामान्य रूप से एसक्यूएल बयानों में पहचानकर्ताओं के नाम को सीमांकित करने के लिए डबल-कोट्स की आवश्यकता होती है, जैसे

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" "Alias"
WHERE "ThisCol" = 'That Value';

हालाँकि, यह शालीनता से दोहरे कोट्स को छोड़ने की अनुमति देता है, जिस स्थिति में यह चुपचाप पहचानकर्ता को अपरकेस में परिवर्तित कर देता है:

SELECT MyColumn AS MyColAlias
FROM MyTable Alias
WHERE ThisCol = 'That Value';

आंतरिक रूप से किसी चीज़ में परिवर्तित हो जाता है:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';

8

जब मैंने कीवर्ड को कॉलम नाम में से एक के रूप में देखा, तो दोहरे उद्धरणों ने काम किया।

उदाहरण के लिए:

select t."size" from table t 

3

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

CREATE TABLE table AS ...

Oracle ऊपरी मामले के रूप में वस्तु का निर्माण करेगा । हालाँकि, जब तक आप दोहरे उद्धरण चिह्नों का उपयोग नहीं करते, संदर्भ संवेदनशील नहीं है!


-8

आपको स्तंभ का नाम बदलकर दूसरे नाम पर रखना होगा क्योंकि TABLEOracle द्वारा आरक्षित है।

आप ओरेकल दृश्य में ओरेकल के सभी आरक्षित शब्दों को देख सकते हैं V$RESERVED_WORDS


मैं ORA-00942जब मैं एक कोशिश select * from V$RESERVED_WORDS
9
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.