2016-10-04 5 views
0

{Numerical Pattern String} .PDFのファイル名を持つテーブルを検索したいと考えています。SQLで検索するための正規表現パターン

例:1.PDF、12.PDF、123.PDF 1234.PDFなど.....

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

しかし、SQLクエリ上記のファイル

 
1801350 Ortho.pdf 
699413.processing2.pdf 
15-NOE-301.pdf 
のも、これらの種類の結果れます

私がここで紛失しているものは誰でも助けてくれますか?

+0

LIKE構文は正規表現ではありません。https: //msdn.microsoft.com/en-us/library/ms179859.aspx – Blorgbeard

答えて

0

それは、ファイル拡張子の前部分文字列を取得し、それかどうかをチェックされて行う一つの方法を使用することができれば、あなたのバージョンに応じて、数値です。この解決策は、ファイル名に1つしかない場合はうまく動作します。

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

を使用するには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(私は大ファンです)ではありません。下記のテーブル変数で2番目のオプションを試してみてください。 –

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 
関連する問題