2017-12-02 19 views
0

데이터 파일에 가장 높은 파일 이름을 표시하려고합니다. 검색어 : select max(file_name) from dba_data_files where tablespace_name='XYZ';MAX를 사용하는 동안 가장 높은 데이터 파일 이름을 확인하는 중 오류가 발생했습니다.

위의 쿼리는 데이터 파일이 abc [0-9] .dbf 인 경우에만 검색합니다. 쿼리가 현재 파일이더라도 abc10.dbf 파일을 표시하지 않습니다. abc9.dbf가 표시됩니다. 데이터 파일의 가장 높은 파일 이름을 얻는 다른 방법이 있습니까?

잠시 분석 한 후. 내 쿼리에서 file_name을 통해 주문했습니다. 이것은 출력입니다.

/.../data01/odam1.dbf 
/.../data01/odam10.dbf 
/.../data01/odam2.dbf 
.................... 
/../data01/odam9.dbf 

어쩌면 최대 기능은 마지막 파일 이름을 감지하고 출력하지 odam10.dbf로 odam9.dbf 보여줍니다 이유입니다. 당신이 표시 한 파일 이름을

+0

사용중인 데이터베이스에 질문을 태그하십시오. –

답변

0

, 당신은 길이와 이름으로 주문할 수 있습니다

select file_name 
from dba_data_files 
where tablespace_name = 'XYZ' 
order by len(filename) desc, file_name desc 
fetch first 1 row only; 

참고 : 길이 기능은 데이터베이스에 따라 length() 수 있습니다. 그리고 일부 데이터베이스는 fetch first 1 row onlylimit 또는 select top으로 입력합니다.

또한 파일 이름이 모두 동일한 구조를 가지며 끝에있는 숫자 만 다릅니다 (질문의 예와 같이).

+0

잘 작동합니다. 정말 고맙습니다 –