Найдите длину самой длинной строки в столбце в оракуле

Кто-либо знает, существует ли способ найти что длина самой длинной строки в столбце в 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.

Спасибо.

16
задан sealz 8 September 2011 в 19:21
поделиться

6 ответов

выберите максимум (ДЛИНА (имя_столбца)) из имя_таблицы.

2
ответ дан 30 November 2019 в 16:09
поделиться

Это будет работать со столбцами VARCHAR2.

select max(length(your_col))
from your_table
/

Очевидно, что все столбцы типа CHAR имеют одинаковую длину. Если столбец является CLOB, вам нужно будет использовать DBMS_LOB.GETLENGTH (). Если это ДЛИННО, это действительно сложно.

30
ответ дан 30 November 2019 в 16:09
поделиться
select max(length(MyColumn)) as MaxLength
from MyTable
2
ответ дан 30 November 2019 в 16:09
поделиться

Это должно делать то, что вы хотите:

select max(length(MyColumn)) from MyTable;

В зависимости от того, чего вы пытаетесь достичь, вам также может быть интересно узнать, что вы можете вывести данные в столбец плюс ровно один пробел, например это:

select rtrim(MyColumn)||' ' from MyTable;
3
ответ дан 30 November 2019 в 16:09
поделиться

Чтобы использовать максимальную длину, вы можете получить ее из встроенного select

select <do something with maxlength here> 
from
(select x.*, 
( select max(length(yourcolumn)) from yourtable) as maxlength 
from yourtable x)
0
ответ дан 30 November 2019 в 16:09
поделиться

без функции:

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;
1
ответ дан 30 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: