在oracle中查找列中最长行的长度

时间:2010-07-29 11:02:43

标签: sql oracle plsql oracle-sqldeveloper

有没有人知道是否有办法找到最长的长度 在Oracle的一列中排?

基本上我需要获得最长行的长度,然后使用该长度加1 使用SUBSTR使列的输出比最长的字符串长一个字符。

由于

修改

感谢您的建议。

但是,MAX(LENGTH(column_name)) AS MAXLENGTH方法为我提供了我想要的数字,但当我尝试将其与SUBSTR(column_name,1, MAXLENGTH)一起使用时,我收到了无效的标识符错误。

所以我做了一个函数来返回我想要使用的数字:

SUBSTR(column_name,1,maxlengthfunc)

这给了我以下输出:

SUBSTR(NAME,1,MAXLENGTHFUNC)

而不是:

SUBSTR(NAME, 1, 19)

并没有像我需要的那样缩小输出列的大小。

另外

RTRIM(name)||' '

在SQL开发人员中没有为我做任何事情。

感谢。

9 个答案:

答案 0 :(得分:29)

这适用于VARCHAR2列。

select max(length(your_col))
from your_table
/

CHAR列显然都是相同的长度。如果列是CLOB,则需要使用DBMS_LOB.GETLENGTH()。如果它很长,那真的很棘手。

答案 1 :(得分:5)

SELECT max(length(col_name)+1) as MyOutput
FROM table_Name

正常输出看起来像

   MyOutput
1     5

新输出看起来像

   MyOutput
1     6

答案 2 :(得分:3)

这应该做你想要的:

select max(length(MyColumn)) from MyTable;

根据您要实现的目标,您可能也有兴趣知道您可以在列中输出数据加上一个空格,如下所示:

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

答案 3 :(得分:2)

从table_name中选择max(LENGTH(column_name))。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

没有功能:

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

将您的函数声明为determinictic以获得更好的效果:

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;

答案 6 :(得分:0)

要使maxlength可用,您可能希望从嵌入的选择中获取它

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

答案 7 :(得分:0)

要将列中的所有值填充到最长值+1,您可以执行以下操作:

SELECT RPAD( column_name ,(SELECT MAX(LENGTH( column_name ))+1 FROM table)) FROM table;

答案 8 :(得分:0)

要使用max in列定义,我建议使用正确的方法:

CoreImage

只需调用函数:

import CoreImage

let ciContext = CIContext(options: nil)

guard let inputImage = CIImage(image: yourUIImage), 
    let mask = CIFilter(name: "CIGaussianBlur") else { return }
mask.setValue(inputImage, forKey: kCIInputImageKey)
mask.setValue(10, forKey: kCIInputRadiusKey) // Set your blur radius here

guard let output = mask.outputImage,
    let cgImage = ciContext.createCGImage(output, from: inputImage.extent) else { return }
outUIImage = UIImage(cgImage: cgImage)