2014-06-18 5 views
7

यदि मुझे किसी तालिका के प्रत्येक कॉलम के नाम पता हैं लेकिन तालिका का नाम नहीं है, तो मुझे तालिका की आवश्यकता का नाम कैसे मिल सकता है?ओरेकल एसक्यूएल: कॉलम नाम दिए गए टेबल नाम को मैं कैसे ढूंढूं?

+0

सुनिश्चित नहीं हैं, लेकिन अगर हर तालिका के लिए प्राथमिक कुंजी COLUMN_NAMES अद्वितीय है तो आप शायद डेटाबेस के मेटा-डेटा तक पहुँचने और टेबल के माध्यम से खोजने का प्रयास कर सकते हैं? – ncdreamy

उत्तर

10

प्रयास करें इस (एक में जाना जाता स्तंभ):

CREATE TABLE mytab(mycol VARCHAR2(30 CHAR));

SELECT table_name FROM user_tab_columns WHERE column_name='MYCOL';

नोट MYCOLऊपरीcolumn_name='MYCOL' में मामले में है,

चीयर्स!

+1

अन्य दृश्य भी उपलब्ध हैं: USER_TAB_COLS, ALL_TAB_COLS, ALL_TAB_COLUMNS। आपके एक्सेस विशेषाधिकारों के आधार पर, ये भी उपलब्ध हैं: DBA_TAB_COLS, DBA_TAB_COLUMNS – Roobie

12

@ रूबी के समाधान के आधार पर, नीचे दिए गए कोड में आपके द्वारा उपयोग की जाने वाली सभी स्कीमा में खोजें, यदि तालिका आपकी स्वयं की स्कीमा में नहीं है। केस-असंवेदनशील मिलान भी जोड़ा गया।

SELECT owner, table_name 
    FROM all_tab_columns 
    WHERE UPPER(column_name) = UPPER('MYCOL'); 
+0

हे जोश, अच्छा संपादन। मुझे लगता है कि आपको बाएं हाथ की ओर UPPER की आवश्यकता नहीं है (UPPER (column_name))। चीयर्स! – Roobie

+2

@Roobie, 99.8% समय, लेकिन बैट सामान पागल विक्रेता कोड की संभावना हमेशा होती है (एसक्यूएल सर्वर के लिए डिज़ाइन किए गए ऐप की सोच जो विक्रेता ने ओरेकल संस्करण बनाया है)। आप ओरेकल में मिश्रित केस कॉलम बना सकते हैं, हालांकि आपको नहीं करना चाहिए। उदाहरण: 'तालिका बेवकूफ_टेबल बनाएं ("मिश्रित केस कॉलम" इंटेग्रर प्राथमिक कुंजी); '। दोनों पक्षों पर 'अप्पर' लगाने से आपके बट को लगभग 100% मामलों में शामिल किया जाता है। एक अच्छी हंसी के लिए, मैं इस पहेली को एक साथ रखता हूं: http://sqlfiddle.com/#!4/2840e/1/0 –

+0

ओह। अपना अंक मिला। चियर्स – Roobie

-4
select * from all_updatable_columns where column_name like 'reqd col name'; 
संबंधित मुद्दे