오라클에서 열의 가장 긴 행 길이 찾기
오라클에서 열에서 가장 긴 행의 길이를 찾을 수 있는 방법이 있는지 아는 사람이 있습니까?
기본적으로 가장 긴 행의 길이를 얻은 다음 그 길이에 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)||' '
실행 시 작동하지 않았습니다.
이것은 VARCHAR2 열에서 작동합니다.
select max(length(your_col))
from your_table
/
CHAR 열은 분명히 모두 같은 길이입니다.열이 CLOB이면 DBMS_LOB.GETLENGTH()를 사용해야 합니다.길이가 길면 정말 까다로워요.
SELECT max(length(col_name)+1) as MyOutput
FROM table_Name
정상 출력은 다음과 같습니다.
MyOutput
1 5
새 출력은 다음과 같습니다.
MyOutput
1 6
select max(length(MyColumn)) as MaxLength
from MyTable
이렇게 하면 원하는 작업을 수행할 수 있습니다.
select max(length(MyColumn)) from MyTable;
달성하려는 항목에 따라 열의 데이터와 다음과 같은 정확히 한 공간을 출력할 수도 있습니다.
select rtrim(MyColumn)||' ' from MyTable;
table_name에서 max(LENGTH(컬럼n_name))를 선택합니다.
함수 없음:
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;
최대 길이를 사용할 수 있도록 하려면 임베디드에서 선택합니다.
select <do something with maxlength here>
from
(select x.*,
( select max(length(yourcolumn)) from yourtable) as maxlength
from yourtable x)
열의 모든 값을 가장 긴 값 +1로 패딩하려면 다음 작업을 수행합니다.
SELECT RPAD( column_name ,(SELECT MAX(LENGTH( column_name ))+1 FROM table)) FROM table;
최대 열 정의를 사용하려면 올바른 접근 방식을 제안합니다.
create or replace FUNCTION F_GET_MAX_LENGTH_TAB_COLUMN
(
pCOLUMN_NAME IN VARCHAR2
, pTABLE_NAME IN VARCHAR2
, pOWNER IN VARCHAR2
) RETURN NUMBER AS
vLength NUMBER;
BEGIN
BEGIN
SELECT DATA_LENGTH
INTO vLength
FROM ALL_TAB_COLUMNS
WHERE
COLUMN_NAME = pCOLUMN_NAME
AND TABLE_NAME = pTABLE_NAME
AND OWNER = pOWNER
;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vLength := 0;
END;
RETURN vLength;
END F_GET_MAX_LENGTH_TAB_COLUMN;
함수를 호출합니다.
SELECT F_GET_MAX_LENGTH_TAB_COLUMN(
pCOLUMN_NAME => 'AGN_ST_NOME',
pTABLE_NAME => 'GLO_AGENTES',
pOWNER => 'MGGLO' )
FROM DUAL;
언급URL : https://stackoverflow.com/questions/3361761/find-the-length-of-the-longest-row-in-a-column-in-oracle
'programing' 카테고리의 다른 글
Git 태그를 체크아웃하면 "HEAD 분리 상태"가 발생합니다. (0) | 2023.06.29 |
---|---|
excel vba에서 글로벌 변수의 수명은 얼마입니까? (0) | 2023.06.29 |
Spring Data MongoDB: "주체 관계"를 구현하는 방법은 무엇입니까? (0) | 2023.06.29 |
푸시하기 전에 여러 커밋을 하나로 결합 (0) | 2023.06.29 |
테이블에서 다른 테이블의 행당 여러 행 가져오기 (0) | 2023.06.29 |