2014-11-11 7 views
2

내가 가지고있는 테이블 중 하나에서 확장자없이 파일 이름을 추출해야합니다.SQLite : 확장명없이 파일 이름 만 선택하는 방법?

현재 내가

SELECT filename FROM files  

전체 파일 이름 (Jessica.Timber.mp3)를 반환하는 데 사용됩니다 사용하고 있습니다. 그래서 sqlite (예 : Jessica.Timber)를 사용하여 파일 이름 만 가져올 수 있습니까? 파일에 여러 개의 "." 마지막 점만 ext가 따라 와야합니다.

나는 확장자는 3 편지 긴 경우 결과를 제공하는 다음 쿼리 시도 (예 : * .MP3)하지만 실패를하는 경우는 그 이상 (예 : * 인 .flac)

SELECT substr(filename, -4, -100) from files;  
+1

파일 이름

select replace(filename , '.' || replace(filename , rtrim(filename, replace(filename, '.', '')) , '') , '') from files; 

테스트 (테스트 및 검증) . 문자의 수를 포함 할 수 있습니다 , 하나의 필드에 두 개의 정보 항목 (파일 이름과 파일 확장자)을 저장한다는 점에서 다릅니다. 데이터베이스의 구조를 제어하는 ​​경우 두 개의 개별 필드에 대한 리팩터링을 시도하고 레코드를 * 읽지 않고 * 쓸 때 * 정보를 분할하십시오. –

답변

0

SQLite는 이것에 도움이되는 built-in string functions을 가지고 있지 않습니다.

재귀 CTE를 만드는 것이 가능하지만 가장 쉬운 방법은 전체 파일 이름을 검색하고 코드에서 확장명을 제거하는 것입니다.

3

다음은 쿼리입니다. 확장자 길이와 관계없이 확장명이없는 파일 이름이 표시됩니다. 그런 다음

create table files (filename); 
insert into files values ("ph.otoJpg.jpg"), ("ph.otoJpeg.jpeg"); 

위의 코드 수익률 : 당신은 당신의 데이터베이스의 설계 결함이

ph.otoJpg. 
ph.otoJpeg. 
관련 문제