替换括号内的数字

时间:2015-05-26 16:01:15

标签: sql sql-server sql-server-2008

我在

列中有数据
## col1 ##
----------
(30)25802112
32(89)02212
(32)2330

需要输出

## output ##
----------
25802112
3202212
2330

是否有任何类似的简单更新可以在我的情况下工作 在此先感谢您的帮助

4 个答案:

答案 0 :(得分:4)

  1. 找到角色的CharIndex)。
  2. 添加1。
  3. 使用Substring函数获取字符串的那一部分,从步骤2的结果开始并询问Len(字符串)。
  4. 注意:如果所有列值都不太可能包含正确的大括号,那么您可能必须使用Case语句来处理那些做的和那些不做的。

    SubString(Col1, CharIndex(')', Col1) + 1, Len(Col1))
    

    编辑:响应OP更改的样本值,其中包括在开始时出现非paranthesed值:这是编辑后的代码,它为修订的样本数据集提供答案。

    Case When CharIndex('(', Col1) > 1 Then 
            Left ( Col1, CharIndex('(', Col1) - 1 ) +
                SubString(Col1, CharIndex(')', Col1) + 1, Len(Col1))
    
        Else 
            SubString(Col1, CharIndex(')', Col1) + 1, Len(Col1))
        End
    

答案 1 :(得分:4)

试试这个:

Select case when charindex('(',col1) > 0 and charindex(')',col1) > 0 
            then substring(col1, 1, charindex('(',col1) -1) +
                 substring(col1, charindex(')', col1) + 1, len(col1))
            else col1 end as col1
from TableName

答案 2 :(得分:3)

希望这会有所帮助..

create table repl
(
    i varchar(20)
)

insert into repl values('(30)25802112')
insert into repl values('(32)2330')
insert into repl values('(89)02212')

select CAST(SUBSTRING(i,PATINDEX('%)%',i)+1, len(i)) AS bigint)
from repl

答案 3 :(得分:3)

SELECT Rtrim(Substring(numbersWithBrackets, charindex(')', numbersWithBrackets) + 1, len(numbersWithBrackets)))
FROM t