21

Oracleの列の最長の行の長さを見つける方法があるかどうかは誰にもわかりませんか?

基本的に、最長の行の長さを取得し、その長さプラス 1 を使用してSUBSTR、列の出力を最長の文字列よりも 1 文字長くする必要があります。

ありがとう

編集:

アドバイスをありがとう。

ただし、この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開発者で私のために何もしませんでした。

ありがとう。

4

9 に答える 9

35

これは VARCHAR2 列で機能します。

select max(length(your_col))
from your_table
/

CHAR 列は明らかにすべて同じ長さです。列が CLOB の場合、DBMS_LOB.GETLENGTH() を使用する必要があります。それが長い場合、それは本当にトリッキーです。

于 2010-07-29T11:06:15.727 に答える
8
SELECT max(length(col_name)+1) as MyOutput
FROM table_Name

通常の出力は次のようになります

   MyOutput
1     5

新しい出力は次のようになります

   MyOutput
1     6
于 2011-09-08T19:24:08.107 に答える
3

これはあなたが望むことをするはずです:

select max(length(MyColumn)) from MyTable;

達成しようとしていることに応じて、次のように、列内のデータと正確に 1 つのスペースを出力できることを知りたいと思うかもしれません。

select rtrim(MyColumn)||' ' from MyTable;
于 2010-07-29T11:05:58.423 に答える
3

table_name から max(LENGTH(column_name)) を選択します。

于 2010-07-29T11:07:08.300 に答える
2
select max(length(MyColumn)) as MaxLength
from MyTable
于 2010-07-29T11:05:53.603 に答える
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;
于 2010-07-29T15:08:46.583 に答える
0

maxlength を使用可能にするには、組み込みの select から取得することをお勧めします

select <do something with maxlength here> 
from
(select x.*, 
( select max(length(yourcolumn)) from yourtable) as maxlength 
from yourtable x)
于 2010-07-29T11:14:48.807 に答える