2010-07-29 13 views
9

Qualcuno sa se c'è un modo per trovare la lunghezza della riga più lunga in una colonna in Oracle?Trova la lunghezza della riga più lunga in una colonna in oracolo

Fondamentalmente ho bisogno di ottenere la lunghezza della riga più lunga e quindi utilizzare quella lunghezza più 1 con SUBSTR per rendere l'output della colonna un carattere più lungo della stringa più lunga.

Grazie

EDIT:

Grazie per il consiglio.

Tuttavia, l'approccio MAX(LENGTH(column_name)) AS MAXLENGTH mi dà il numero desiderato ma quando provo ad usarlo con SUBSTR(column_name,1, MAXLENGTH) viene visualizzato un errore di identificatore non valido.

Così ho fatto una funzione per restituire il Numberi wanted poi utilizzato:

SUBSTR(column_name,1,maxlengthfunc) 

Questo mi ha dato il seguente risultato:

SUBSTR(NAME,1,MAXLENGTHFUNC) 

Piuttosto che:

SUBSTR(NAME, 1, 19) 

Ed non ha ridotto la dimensione della colonna di output come mi serviva.

anche

RTRIM(name)||' ' 

non ha fatto nulla per me in sviluppatori SQL.

Grazie.

risposta

1
select max(length(MyColumn)) as MaxLength 
from MyTable 
3

Questo dovrebbe fare quello che vuoi:

select max(length(MyColumn)) from MyTable; 

seconda di cosa si sta cercando di ottenere, si può anche essere insterested di sapere che si possono emettere i dati nella colonna più esattamente uno spazio In questo modo:

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

Funzionerà con colonne VARCHAR2.

select max(length(your_col)) 
from your_table 
/

Le colonne CHAR sono ovviamente tutte della stessa lunghezza. Se la colonna è un CLOB, sarà necessario utilizzare DBMS_LOB.GETLENGTH(). Se è lungo, è davvero difficile.

2

selezionare max (LENGTH (nome_colonna)) da nome_tabella.

0

per rendere il maxlength utilizzabile si consiglia di ottenere da un incastonato selezionare

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

w/o la funzione:

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 

con la funzione:

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

declare la tua funzione come determinictic per prestazioni migliori:

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 

Uscita normale sarebbe simile

MyOutput 
1  5 

Nuova uscita sarebbe simile

MyOutput 
1  6