2

我有一name列在某些单元格中包含一个带括号的字符串。

例子:

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

等等。我需要完全删除括号中的部分。

Smith
Jones
Janes
Renold

尝试了各种CHARINDEXREPLACE但要么得到一个无效的长度错误,要么它只删除了一部分。

4

1 回答 1

3

这是您基本上需要的,只需修改它以适合您的查询:

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
于 2016-08-23T11:54:04.463 回答