日期:2014-05-17  浏览次数:20541 次

版主,各位高手,传递到 SUBSTRING 函数的长度参数无效,求解释啊???

执行更新语句:update entity_index  set WJH=
substring(dwgmc,charindex('[',dwgmc)+1,charindex(']',dwgmc)-charindex('[',dwgmc)-1) 
from entity_index where dwgmc like '%0600%'
为什么出现这个错误啊,求方法
消息 536,级别 16,状态 5,第 1 行
传递到 SUBSTRING 函数的长度参数无效。
语句已终止。

------最佳解决方案--------------------
substring()长度参数应有小于0的情况,用如下语句查找.

select dwgmc,charindex(']',dwgmc)-charindex('[',dwgmc)-1 'length'
from entity_index 
where dwgmc like '%0600%'
and (charindex(']',dwgmc)-charindex('[',dwgmc)-1)<0

------其他解决方案--------------------
你没写判断呀? 如果[ 或是 ] 不存在
charindex(']',dwgmc)就是0了 
0-1=-1,对于substring就溢出了。
------其他解决方案--------------------
你要在where条件里将[及]不存在的情况排除掉,那么这个语句就会起作用,如果要针对没有[或]的情况,那么楼主要好好考虑该如何去写更新的update语句。