2009-03-08 11 views
2

私はMS 2000のSQLデータベースに文字列を持っており、選択した文字列を使ってSSNを削除する必要があります。私は外部アプリを使用するオプションがありません。もう一つの楽しい部分は、SSNの場所が常に同じではないということです。SQLの文字列からSSN(社会保障番号)を削除

[B-Day][First Name][SSN][POB] 
12121970John123-45-6789Las Vages 

それとも

[B-Day][First Name][Last Name][SSN][POB] 
12121970JohnDoe123-45-6789Las Vages 

私は、SQL品種の正規表現を必要とします!

アイデア?

答えて

2

 
SELECT substring(a, 1, PatIndex('%[0-9][0-9][0-9]-%', a) - 3) 
+ substring(a, PatIndex('%[0-9][0-9][0-9]-%', a) + 9, 100) FROM myTable 

MYTABLEは "" 列の名前で、テーブルです。

編集:社会保障番号のフォーマットに関するいくつかの仮定があります。 また、最後に文字列を選択するために任意の数値100を追加しました。あなたの文字列がそれ以上の場合、それを増やすことができます。

+0

私は少し物事を変えなければならなかったが、それは私を始めた。ありがとう! 部分文字列(a、1、PatIndex( '%[0-9] [0-9] [0-9] - %'、a)-1)+ 部分文字列(a、PatIndex( '% - [0 -9] [0-9] [0-9] [0-9]% '、a)+ 5,100 FROM testTable – NitroxDM

2

サーバにアクセスしていると仮定して、here is an articleではVBScriptを使用してRegex関数をMSSQL 2000に追加する方法について説明しています。そこからSSNと一致する正規表現は非常に簡単です([0-9]{3}-[0-9]{2}-[0-9]{4})。置き換えとマッチングをサポートするために、記事で提供されている機能を拡張する必要があります。

+0

これは良い回答であり、より一般的です。しかし、私はこの場合サーバーにアクセスすることはできません。ありがとう! – NitroxDM

関連する問題