-1

これが可能かどうか疑問に思っています。使用する名前データが乱雑で、他のアプリケーションと共有されているため、更新ステートメントを実行したくありません。ただし、データには次のような AKA が含まれることがあります。

ロバート(別名ボブ)

そして、「ロバート」とだけ書かれているクリーンなデータを取得しようとしています。

私が考えた1つの方法は、一時テーブルを使用し、次にCHARINDEXを(および)に使用し、次に(と)の間にあるものを置換することです。これは、これを行うための長い道のりのようです。

よりスマートな方法はありますか?

EDIT:データ地獄の例をもっと。次のように、括弧が前に出たり、混同されたりすることがあります。

(ビル) ウィリアム

リチャード(ディック)Jr.

4

3 に答える 3

1

未テスト:

FirstName = case when charindex('(AKA', FirstName) = 0 
                 then FirstName 
                 else substring(FirstName, 1, charindex('(AKA', FirstName)) end
于 2013-03-12T00:16:45.237 に答える
0

ノイズの多い文字列パターンが予測できない場合は、SQL CLR TVF (テーブル値関数) を使用することをお勧めします。C# コードの正規表現を使用します。処理する必要があるデータを含む xml を入力パラメーターとして取得すると、データが処理されたテーブルが返されます。

于 2013-03-12T07:07:44.870 に答える
-1

ピーターは私のためにボールを転がしてくれました!正しい軌道に乗せてくれてありがとう!

 SELECT
 CASE WHEN FirstName like '%)%'
 THEN REPLACE(FirstName,
 SUBSTRING(FirstName,CHARINDEX('(',FirstName),CHARINDEX(')',FirstName)-CHARINDEX('(',FirstName)+1),'')
 ELSE FirstName END
于 2013-03-12T00:45:01.107 に答える