2016-12-16 8 views
3

私はガス証明書番号の列を持っていて、それらのいずれかがガス証明書番号の形式を守らないかどうかをチェックしたい。書式はWN/3333333/1(WNの後に続く2つの文字と/と7桁の数字の後に/と1や01や0001のような1桁の数字でなければなりません)最高のSQLデータ例外チェックREGEX

私の考えはうまくいきましたすべてのシナリオと一つ一つに、それらを解決する。しかし、第一のステップは、すべての例外は、いくつかのスーパーのSQLクエリを実行しているかを働いている。

は、SQLを使用してexecptionsを特定しようとするのは良い方法はありますか?

+0

グレートスタッフチャップ! –

答えて

2

だろうSQL Serverは、いくつかの基本的な正規表現をサポートしています機能はLIKEとなります。私はあなたが単一のLIKE表現を使って、準拠していないレコードを識別できると思います。

SELECT column 
FROM yourTable 
WHERE column NOT LIKE 'WN/[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/[0-9]' 
3

動的パターンの一致については、次の点を考慮してください。

"A"は任意のALPHAを表し、 "0"は任意の数字を表します。

Declare @Patt varchar(150) ='AA/0000000/0' 
Declare @Test varchar(150) ='WN/3333333/1' 

Set @Patt = replace(replace(replace(@Patt COLLATE Latin1_General_BIN, 'A', '[A-Z]'), 'a', '[a-z]'), '0', '[0-9]') 
Select case when @Test Like @Patt then 1 else 0 end 

1または0を返す

1 -- Pattern Match 

さて、パターンは常にWN/...だろうと、@Pattは 'WN/0000000/0'