从entity_index 这张表的dwgmc这一列中提取图中画出椭圆形的一连串数字(档号)如果没有档号的可以忽略。求高手帮忙急用!!!
------最佳解决方案--------------------
declare @t table (dwgmc varchar(48))
insert into @t
select '011-钢梯T6-091(0600-8022-501)[td-tl]{asdfsdf}' union all
select '011-钢梯T6-091(0600-8022-505)[td-tl213]{asdfsdf}' union all
select '011-钢梯T6-091[td-tl1231]{asdfsdf}' union all
select '011-钢梯T6-091(0600-8022-501)[td-tl123]{asdfsdf}'
select
case when charindex('(',dwgmc)>0 and
charindex(')',dwgmc)>0
then
substring(dwgmc,charindex('(',dwgmc)+1,charindex(')',dwgmc)-charindex('(',dwgmc)-1)
else '无' end as dwgmc
from @t
/*
dwgmc
------------------------------------------------
0600-8022-501
0600-8022-505
无
0600-8022-501
*/
------其他解决方案--------------------
找到'(' 和 ')'然后把中间截取出来?楼主是这个意思吗?
------其他解决方案--------------------
就是把画红色的椭圆部分的例如0600-8022-501这样的提取出来
------其他解决方案--------------------
执行的时候报这个错误,请问什么原因呐?
消息 536,级别 16,状态 5,第 1 行
传递到 SUBSTRING 函数的长度参数无效。
------其他解决方案--------------------
数据里面是不是有)( 这种情况,括号是反的?
------其他解决方案--------------------
或者是(0600-8022-501) 之前还有其他的(?
数据不规则就不好判断了...
------其他解决方案--------------------
我就是执行了select case when charindex('(',dwgmc)>0 and charindex(')',dwgmc)>0 then substring(dwgmc,charindex('(',dwgmc)+1,charindex(')',dwgmc)-charindex('(',dwgmc)-1) else '无' end as dwgmc from entity_index 这句话报的错误!该怎么改?
------其他解决方案--------------------
没有反的也没有其他的(
------其他解决方案--------------------
select
case when charindex('(',dwgmc)>0 and charindex(')',dwgmc)>0 and charindex('(',dwgmc)<charindex(')',dwgmc)
then
substring(dwgmc,charindex('(',dwgmc)+1,charindex(')',dwgmc)-charindex('(',dwgmc)-1)
else '无' end as dwgmc
from entity_index
你再试一试... 这个和数据有关系,应该是有部分特殊数据,但是我现在看不到特殊性。
------其他解决方案--------------------