Кто-либо знает, существует ли способ найти что длина самой длинной строки в столбце в Oracle?
В основном я должен получить длину самой длинной строки и затем использовать ту длину плюс 1 с SUBSTR
сделать вывод столбца одним символом дольше, чем самая длинная строка.
Спасибо
Править:
Спасибо за совет.
Однако MAX(LENGTH(column_name)) AS MAXLENGTH
подход дает мне число, которое я хочу, но когда я пытаюсь использовать его с SUBSTR(column_name,1, MAXLENGTH)
Я получаю недопустимую ошибку идентификатора.
ТАКИМ ОБРАЗОМ, я сделал функцию для возврата numberI, требуемого затем используемый:
SUBSTR(column_name,1,maxlengthfunc)
Это дало мне следующий вывод:
SUBSTR(NAME,1,MAXLENGTHFUNC)
Вместо:
SUBSTR(NAME, 1, 19)
И это не уменьшало выходной размер столбца как, мне было нужно.
Также
RTRIM(name)||' '
ничего не сделал для меня в разработчике SQL.
Спасибо.
выберите максимум (ДЛИНА (имя_столбца)) из имя_таблицы.
Это будет работать со столбцами VARCHAR2.
select max(length(your_col))
from your_table
/
Очевидно, что все столбцы типа CHAR имеют одинаковую длину. Если столбец является CLOB, вам нужно будет использовать DBMS_LOB.GETLENGTH (). Если это ДЛИННО, это действительно сложно.
select max(length(MyColumn)) as MaxLength
from MyTable
Это должно делать то, что вы хотите:
select max(length(MyColumn)) from MyTable;
В зависимости от того, чего вы пытаетесь достичь, вам также может быть интересно узнать, что вы можете вывести данные в столбец плюс ровно один пробел, например это:
select rtrim(MyColumn)||' ' from MyTable;
Чтобы использовать максимальную длину, вы можете получить ее из встроенного select
select <do something with maxlength here>
from
(select x.*,
( select max(length(yourcolumn)) from yourtable) as maxlength
from yourtable x)
без функции:
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
с вашей функцией:
select
rpad(tbl.column_name, MaxLengthFunc + 1, ' ') as target_string
from
my_table tbl
объявите вашу функцию как детерминированную
для повышения производительности:
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;