2016-10-04 2 views
0

{Numerical Pattern String} .PDF를 사용하여 파일 이름이있는 테이블을 검색하려고합니다.SQL에서 검색을위한 정규 표현식 패턴

예 :

select * from web_pub_subfile where file_name like '[0-9]%[^a-z].pdf' 

그러나 SQL 쿼리 위

의 파일도 이런 종류의 결과입니다 1.PDF, 12.PDF, 123.PDF 1234.PDF 등 .....

 
1801350 Ortho.pdf 
699413.processing2.pdf 
15-NOE-301.pdf 

아무도 내가 여기에서 빠뜨린 것을 도울 수 있습니까?

+0

을 사용합니다 : //msdn.microsoft.com/en-us/library/ms179859.aspx – Blorgbeard

답변

0

한 가지 방법은 사용할 수 숫자입니다. 이 해결 방법은 파일 이름에 . 문자가 하나만있는 경우에만 제대로 작동합니다.

select * from web_pub_subfile 
where isnumeric(left(file_name,charindex('.',file_name)-1)) = 1 

참고 :

ISNUMERIC 반환 등의 플러스 (+)와 같은 숫자가 아닌 일부 문자 1, 마이너스 (-) 및 달러 기호 유효한 통화 기호 ($).

는 mutliple . 문자가 포함 된 파일 이름을 처리하고 항상 .filetype 확장이있는 경우 @Blorgbeard에 의해 제안의 사용을 방지하기 위해, 코멘트에

select * from web_pub_subfile 
where isnumeric(left(file_name,len(file_name)-charindex('.',reverse(file_name)))) = 1 
and charindex('.',file_name) > 0 

Sample demo

을 사용하려면 HTTPS : 구문 정규식하지 LIKE isnumeric,

select * from web_pub_subfile 
where left(file_name,len(file_name)-charindex('.',reverse(file_name))) NOT LIKE '%[^0-9]%' 
and len(left(file_name,len(file_name)-charindex('.',reverse(file_name)))) > 0 
+0

감사합니다. 그것은 나를 위해 작동 –

+0

@vkp 내 사과, 나는 그것을 보지 못했습니다. 덧글 제거 –

+0

@vkp 나는 putz (나는 큰 팬이다)가 아니야, 아래에 제공된 테이블 변수로 두 번째 옵션을 시도해 보라. –

0

당신은 실제로 SQL을 사용하여 일반 작업을 수행하려고 시도 할 수 없습니다. reason you are seeing those results 문자는 % 문자가 여러 번 임의의 문자와 일치한다는 것입니다. 재현 문자가 0 번 이상 일치하는 *과 같지 않습니다.

가장 좋은 옵션은 SQL Server 측에서 정규식 기능을 구현하는 일부 CLR 함수를 만드는 것입니다. 당신은 시작하기 좋은 곳을 찾기 위해 at this link을 볼 수 있습니다.

0

2012+의 경우 버전에 따라 Try_Convert()을

select * from web_pub_subfile where Try_Convert(int,replace(file_name,'.pdf',''))>0 



Declare @web_pub_subfile table (file_name varchar(100)) 
Insert Into @web_pub_subfile values 
('1801350 Ortho.pdf'), 
('699413.processing2.pdf'), 
('15-NOE-301.pdf'), 
('1.pdf'), 
('1234.pdf') 

select * from @web_pub_subfile where Try_Convert(int,replace(file_name,'.pdf',''))>0 

반환

는 파일 확장자 앞에 문자열을 받고 그 경우 확인하고 있습니다 할
file_name 
1.pdf 
1234.pdf