2010-07-29 36 views
9

Có ai biết nếu có cách nào để biết chiều dài của hàng dài nhất trong một cột trong Oracle dài nhất là ?Tìm chiều dài của hàng dài nhất trong một cột trong oracle

Về cơ bản, tôi cần có độ dài của hàng dài nhất và sau đó sử dụng độ dài đó cộng 1 với SUBSTR để làm cho đầu ra của cột dài hơn một ký tự.

Cảm ơn

EDIT:

Cám ơn những lời khuyên.

Tuy nhiên, cách tiếp cận MAX(LENGTH(column_name)) AS MAXLENGTH cung cấp cho tôi số tôi muốn nhưng khi tôi cố gắng sử dụng số này với SUBSTR(column_name,1, MAXLENGTH) Tôi gặp phải lỗi định danh không hợp lệ.

SO tôi đã thực hiện một chức năng để trả lại Numberi sau đó muốn sử dụng:

SUBSTR(column_name,1,maxlengthfunc) 

này đã cho tôi kết quả như sau:

SUBSTR(NAME,1,MAXLENGTHFUNC) 

Thay vì:

SUBSTR(NAME, 1, 19) 

Và nó đã không thu nhỏ kích thước cột đầu ra như tôi cần.

Cũng

RTRIM(name)||' ' 

đã không làm bất cứ điều gì cho tôi trong nhà phát triển SQL.

Cảm ơn.

Trả lời

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

này nên làm những gì bạn muốn:

select max(length(MyColumn)) from MyTable; 

Tùy thuộc vào những gì bạn đang cố gắng để đạt được, bạn cũng có thể được insterested để biết rằng bạn có thể xuất dữ liệu trong cột cộng với chính xác một không gian như thế này:

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

Điều này sẽ làm việc với cột VARCHAR2.

select max(length(your_col)) 
from your_table 
/

CHAR cột rõ ràng là có cùng độ dài. Nếu cột là một CLOB, bạn sẽ cần sử dụng DBMS_LOB.GETLENGTH(). Nếu đó là một LONG nó thực sự khó khăn.

2

chọn tối đa (LENGTH (column_name)) từ tên_bảng.

0

Để thực hiện maxlength sử dụng được bạn có thể muốn có được nó từ một nhúng chọn

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

w/o chức năng:

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 

với chức năng của bạn:

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

khai báo chức năng của bạn là determinictic để có hiệu suất tốt hơn:

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 

sản lượng bình thường sẽ trông như thế

MyOutput 
1  5 

sản lượng mới sẽ trông như thế

MyOutput 
1  6 
Các vấn đề liên quan