SQL server列 截取字符串

某列情况如图,我想提取出括号里的字符串显示出来,材料费,资料费 什么的。怎么样写
最新回答
你若安好那还得了

2024-11-04 00:39:55

要是BIZNAME有两个括号就不行了
select substring(bizname,charindex('(',bizname),charindex(')',bizname))
from 表名
where charindex('(',bizname)>0

charindex('(',bizname)>0 这个条件是bizname 栏位裏面必须有()
追问
照你这样就如第一列,我想把那括号给去了,不包括它
追答
select  substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-1)         
from 表名
where charindex('(',bizname)>0
追问
上一个追问的图你没注意看。看现在这个图,右括号没去掉, 无形资产(软件)这个数据倒是成了。如果-1改成-2,其他的都成了,但是软件这个的全角右括号就没了。。
追答
哦了 刚才没看清楚
但是:无形资产(软件)这个没有太好的办法解决,因为charindex(')',bizname)是返回第一个')'的位置的值。
下面的能暂时解决你的问题
select case when (charindex('(',bizname)>0 and charindex('))',bizname)=0)
then substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-2) else substring(bizname,charindex('(',bizname)+1,charindex(')',bizname)-1) end
from 表名
where charindex('(',bizname)>0
睡着的未来

2024-11-04 03:48:51

declare @a varchar(50)
select @a= ziduan from table12
declare @i int ,@j int
set @i = Charindex('(',@a)
set @j = Charindex(')',@a)
declare @e varchar(20)
set @e=substring(@a,@i+1,@j-2)
print @e
ぇ气

2024-11-04 02:34:36

select substring(charindex('(',BizName)+1,charindex')',BizName)-1)
from 表名 where charindex('(',BizName)>1
追问
如图,成这样了。只有无形资产(软件)这个成功。如果把-1变成-2,则其他的都成了,无形资产(软件)这一个数据的全角右括号变没了。。。