2011-02-12 18 views
7

मैं ओरेकल डीबी के लिए नया हूं, और मुझे आश्चर्य है कि मैं डेटाटाइप और डेटासाइज को ढूंढ सकता हूं ... मेरा मतलब है: मान लीजिए कि मेरे पास varchar2 (20) के कॉलम "स्थान" है तालिका "उत्पादों" में। क्या मैं एक प्रश्न लिख सकता हूं जो मुझे परिणाम "varchar2" और "20" में वापस कर देगा?ओरेकल कॉलम डेटा आकार

धन्यवाद!

उत्तर

19

user_tab_columns देखें।

select data_type, data_length 
    from user_tab_columns 
where table_name = 'PRODUCTS' 
    and column_name = 'LOCATION'; 
1
SELECT CHAR_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = <TABLENAME> AND COLUMN_NAME = <COLUMNNAME>;  
+0

मैं चयन खंड में DATA_TYPE जोड़ने के लिए भूल गया। – Ketan

5

आप डेटा को समझने के उद्देश्य के लिए प्रकार और एक स्तंभ का आकार पता लगाने के लिए की जरूरत है, या आप एक प्रोग्राम रनटाइम पर यह पता करने की जरूरत है कि लिख रहे हैं?

यदि आपको केवल अपने ज्ञान के लिए यह जानने की आवश्यकता है, तो SQLPlus में desc tablename टाइप करना आपको तालिका में कॉलम के बारे में बताएगा।

यदि आपको प्रोग्राम और प्रकार का प्रोग्रामेटिक रूप से पता लगाना है, तो आप किस भाषा का उपयोग कर रहे हैं ... पीएल/एसक्यूएल? जावा?

ध्यान दें कि USER_TAB_COLUMNS से ​​चयन करने से केवल आपकी स्वयं की स्कीमा में तालिकाओं में कॉलम सूचीबद्ध होंगे। अन्य तालिकाओं के लिए आपको सभी_TAB_COLUMNS (या DBA_TAB_COLUMNS, यदि डीबीए ने आपको एक्सेस करने की अनुमति दी है) को देखने की आवश्यकता होगी। ध्यान दें कि आपका नियोक्ता या ग्राहक संग्रहीत प्रक्रियाओं या पैकेजों को या तो संकलित होने से अस्वीकार कर सकता है।

1

इस प्रश्न का उत्तर मेरे लिए उपयोगी था। लेकिन, कॉलम प्रकार NVARCAHR2 होने पर डेटा_लेथेंथ लेने के दौरान एक महत्वपूर्ण अंतर पर विचार किया जाना चाहिए। NVARCHA2 कॉलम के लिए डेटा_लेथेंस वापस दोगुना हो गया है।

यह वर्ण एन्कोडिंग का उपयोग होने के कारण है। Oracle documentation का कहना है:

बाइट की संख्या के लिए AL16UTF16 एन्कोडिंग और UTF8 एन्कोडिंग के लिए तीन बार आकार दो बार आकार तक हो सकता है।

तो, आदर्श क्वेरी निम्नलिखित होगा:

select table_name, column_name, 
data_type, NVL(char_col_decl_length, data_length) 
from user_tab_columns where table_name='T51_NOCOMP'; 
1

मैं ओरेकल के लिए sqlplus से निम्न कार्य करें:

SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND COLUMN_NAME = 'YOUR';

यह आप के लिए भी काम करता है आशा है!

संबंधित मुद्दे