2010-07-29 10 views
9

में किसी कॉलम में सबसे लंबी पंक्ति की लंबाई पाएं क्या किसी को पता है कि ओरेकल में एक कॉलम में सबसे लंबी पंक्ति की लंबाई क्या है?ओरेकल

असल में मुझे सबसे लंबी पंक्ति की लंबाई प्राप्त करने की आवश्यकता है और फिर उस लंबाई के साथ 1 SUBSTR के साथ कॉलम के आउटपुट को सबसे लंबे स्ट्रिंग से अधिक वर्ण बनाने के लिए उपयोग करें।

धन्यवाद

संपादित करें:

सलाह के लिए धन्यवाद।

हालांकि, MAX(LENGTH(column_name)) AS MAXLENGTH दृष्टिकोण मुझे वह नंबर देता है जो मुझे चाहिए लेकिन जब मैं इसे SUBSTR(column_name,1, MAXLENGTH) के साथ उपयोग करने का प्रयास करता हूं तो मुझे एक अवैध पहचानकर्ता त्रुटि मिलती है।

SUBSTR(NAME,1,MAXLENGTHFUNC) 

के बजाय:

SUBSTR(column_name,1,maxlengthfunc) 

यह मैं निम्नलिखित उत्पादन दिया:

अतः मैं तो इस्तेमाल किया चाहते थे Numberi वापस जाने के लिए एक समारोह बना

SUBSTR(NAME, 1, 19) 

और यह मुझे आवश्यक कॉलम आकार को कम नहीं किया।

इसके अलावा

RTRIM(name)||' ' 

एसक्यूएल डेवलपर में मेरे लिए कुछ भी नहीं किया।

धन्यवाद।

उत्तर

3

यह आप क्या चाहते हैं करना चाहिए: आप क्या हासिल करने की कोशिश कर रहे हैं पर निर्भर करता है

select max(length(MyColumn)) from MyTable; 

, आप भी पता करने के लिए insterested जा सकता है कि आप कर सकते हैं उत्पादन स्तंभ में डेटा के साथ साथ ठीक एक अंतरिक्ष इस तरह:

select rtrim(MyColumn)||' ' from MyTable; 
22

यह VARCHAR2 कॉलम के साथ काम करेगा।

select max(length(your_col)) 
from your_table 
/

CHAR कॉलम स्पष्ट रूप से सभी समान लंबाई हैं। यदि कॉलम एक सीएलओबी है तो आपको डीबीएमएस_LOB.GETLENGTH() का उपयोग करने की आवश्यकता होगी। यदि यह लंबा है तो यह वास्तव में मुश्किल है।

2

तालिका_नाम से अधिकतम (LENGTH (column_name)) का चयन करें।

0

बनाने के maxlength useable आप डब्ल्यू एक सन्निहित चयन

select <do something with maxlength here> 
from 
(select x.*, 
(select max(length(yourcolumn)) from yourtable) as maxlength 
from yourtable x) 
1

से इसे पाने के लिए चाहते हो सकता है/समारोह o:

select 
    rpad(tbl.column_name, MaxLengthFunc + 1, ' ') as target_string 
from 
    my_table tbl 

घोषित:

select 
    rpad(tbl.column_name, length_info.max_length+1, ' ') as target_string 
from 
    table_name tbl, 
    (
    select max(length(column_name)) max_length 
    from my_table 
) 
    length_info 
अपने कार्य के साथ

बेहतर प्रदर्शन के लिए determinictic के रूप में आपका कार्य:

create or replace function MaxLengthFunc 
return number 
deterministic 
as 
    vMaxLen number; 
begin 

    select max(length(column_name)) 
    into vMaxLen 
    from table_name; 

    return vMaxLen; 

end; 
3
SELECT max(length(col_name)+1) as MyOutput 
FROM table_Name 

सामान्य उत्पादन की तरह

MyOutput 
1  5 

नई उत्पादन लगेगा

MyOutput 
1  6 
कैसा लगेगा