2010-07-29 24 views
9

¿Alguien sabe si hay una manera de encontrar lo que la longitud de la fila más larga en una columna en Oracle?Encuentra la longitud de la fila más larga en una columna en el oráculo

Básicamente necesito para obtener la longitud de la fila más larga y luego usar esa longitud más 1 con SUBSTR para que la salida de la columna de un carácter más larga que la cadena más larga.

Gracias

EDIT:

Gracias por el consejo.

Sin embargo, el enfoque MAX(LENGTH(column_name)) AS MAXLENGTH me da el número que quiera pero cuando trato de usarlo con SUBSTR(column_name,1, MAXLENGTH) Me aparece un error identificador válido.

así que hice una función para devolver el Numberi luego quería utilizar:

SUBSTR(column_name,1,maxlengthfunc) 

Esto me dio el siguiente resultado:

SUBSTR(NAME,1,MAXLENGTHFUNC) 

En lugar de:

SUBSTR(NAME, 1, 19) 

Y no redujo el tamaño de la columna de salida como lo necesitaba.

también

RTRIM(name)||' ' 

no hizo nada para mí en desarrollador de SQL.

Gracias.

Respuesta

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

Esto debería hacer lo que quiera:

select max(length(MyColumn)) from MyTable; 

Dependiendo de lo que está tratando de lograr, porque también puede ser insterested saber que se puede dar salida a los datos de la columna, más exactamente un espacio como este:

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

Esto funcionará con columnas VARCHAR2.

select max(length(your_col)) 
from your_table 
/

columnas CHAR son, evidentemente, de la misma longitud. Si la columna es un CLOB tendrá que utilizar DBMS_LOB.GETLENGTH(). Si es LARGO, es realmente complicado.

2

select max (LONGITUD (nombre_columna)) a partir nombre_tabla.

0

Para hacer el maxlength utilizable es posible que desee obtener de un incrustada seleccione

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

w/o Función:

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 su función:

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

declarar su función como determinictic para un mejor rendimiento:

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 

salida normal se vería

MyOutput 
1  5 

Nueva salida es parecida a

MyOutput 
1  6 
Cuestiones relacionadas