2016-08-23 3 views
1

nameという列があり、一部のセルに括弧で囲まれた文字列が含まれています。SQL Server 2008でincluding()を含む文字列を削除します。

例:

Smith (Divorced) 
Jones 
Janes 
Renold (Deaceased)... 

のように。私は完全に括弧で囲まれたセクションを削除する必要があります。

Smith 
Jones 
Janes 
Renold 

しようとした様々なCHARINDEX年代とREPLACEが、どちらかが無効な長さのエラーを取得するか、一部だけを削除します。

答えて

2

ここだけ、あなたのクエリに合わせて、それを修正し、あなたが基本的に必要なものです:

declare @tmp table (name varchar(100)) 
insert @tmp values ('smith (divorced)') , ('jones'), ('renold (deceased)...') 

select name 
    , case 
     when charindex('(', name, 1) > 0 
      then rtrim(left(name, charindex('(', name, 1) - 1)) 
     else name 
     end as [name] 
from @tmp 

あなたは、あなたが持っているデータを交換するだけでUPDATEを発行し、以下のようにする必要がある場合:

UPDATE Persons_Table 
SET Name = case 
      when charindex('(', Name, 1) > 0 
       then rtrim(left(Name, charindex('(', Name, 1) - 1)) 
      else Name 
      end 
WHERE charindex('(', Name, 1) > 0 -- could prove useful since you might not want to go 
            -- over all of the data 
関連する問題