从entity_index 这张表的dwgmc这一列中提取图中画出椭圆形的一连串数字(档号)如果没有档号的可以忽略。求高手帮忙急用!!!
解决方案 »
- 用SQL递归检索数据
- 触发器问题---不同日期调用不同的表
- 想做一个WEB应用程序,数据量能达到1000万,表的键值都采用了GUID,这样表的关联和查询会不会受到影响
- 触发器中如有多行同时更改或多行同时删除时,和只删除一行的触发器是不是一样?
- sql 2005 复制问题:同一个数据库上不能同时创建合并发布和订阅吗?
- 救命啊,快活不下去了,这个问题搞了三天了,麻烦各位高人指点下吧!!!
- 很实用的问题,在网上却找不到解决办法,难道还有更好的方法???
- 是否可行?将某列的值作为表名进行联合查询。
- 帮忙分析一下这个select语句
- 请教,谢谢
- SQL2005 对查询结果用join语句
- 更新语句。高手进!!
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
*/
执行的时候报这个错误,请问什么原因呐?
消息 536,级别 16,状态 5,第 1 行
传递到 SUBSTRING 函数的长度参数无效。
我就是执行了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你再试一试... 这个和数据有关系,应该是有部分特殊数据,但是我现在看不到特殊性。
sorry,老大,我看错了在类似(0600-8022-501) 之前有些列还有其他的[color=#FF0000](这个中文状态下输入的括号,怎么也一起去掉???[/color]
create table tb20111110(dwgmc varchar(60))
insert into tb20111110
select '(aa)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 tb20111110
/*
dwgmc
------------------------------------------------------------
aa
0600-8022-505
无
0600-8022-501(4 行受影响)
*/
alter table tb20111110 alter column dwgmc nvarchar(60) collate chinese_prc_ci_as_ws 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 tb20111110 /*
dwgmc
------------------------------------------------------------
0600-8022-501
0600-8022-505
无
0600-8022-501(4 行受影响)
*/
让它区分宽度就可以了。
老大我又发了一个帖子http://bbs.csdn.net/topics/390276599