我在
列中有数据## col1 ##
----------
(30)25802112
32(89)02212
(32)2330
需要输出
## output ##
----------
25802112
3202212
2330
是否有任何类似的简单更新可以在我的情况下工作 在此先感谢您的帮助
答案 0 :(得分: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