传递给 LEFT 或 SUBSTRING 函数的长度无效
Invalid length passed to the LEFT or SUBSTRING function
到目前为止,我们有一个存储过程。最近由于以下原因开始失败:传递给 LEFT 或 SUBSTRING 函数的长度参数无效
,case
when LEFT(MCTN.MCTN_NAME,2) = ' ' then SUBSTRING(MCTN.MCTN_NAME,3,LEN(MCTN.MCTN_NAME) - 2)
when ASCII(LEFT(MCTN.MCTN_NAME,1)) BETWEEN 32 AND 47 THEN SUBSTRING(MCTN.MCTN_NAME,2,LEN(MCTN.MCTN_NAME) - 1)
else MCTN.MCTN_NAME
end as MCTN_NAME
我正在尝试确定如何纠正此问题,以免将来发生这种情况。
谢谢
据推测,您的值的长度变为 0,例如 ' '
或 32 到 47 之间的一个字符。
您可以通过向 case
添加更多条件来解决此问题:
(case when MCTN.MCTN_NAME LIKE ' _%'
then SUBSTRING(MCTN.MCTN_NAME, 3, LEN(MCTN.MCTN_NAME) - 2)
when ASCII(LEFT(MCTN.MCTN_NAME, 1)) BETWEEN 32 AND 47 AND LEN(MCTN.MCTN_NAME) >= 2
then SUBSTRING(MCTN.MCTN_NAME, 2, LEN(MCTN.MCTN_NAME) - 1)
else MCTN.MCTN_NAME
end) as MCTN_NAME
到目前为止,我们有一个存储过程。最近由于以下原因开始失败:传递给 LEFT 或 SUBSTRING 函数的长度参数无效
,case
when LEFT(MCTN.MCTN_NAME,2) = ' ' then SUBSTRING(MCTN.MCTN_NAME,3,LEN(MCTN.MCTN_NAME) - 2)
when ASCII(LEFT(MCTN.MCTN_NAME,1)) BETWEEN 32 AND 47 THEN SUBSTRING(MCTN.MCTN_NAME,2,LEN(MCTN.MCTN_NAME) - 1)
else MCTN.MCTN_NAME
end as MCTN_NAME
我正在尝试确定如何纠正此问题,以免将来发生这种情况。
谢谢
据推测,您的值的长度变为 0,例如 ' '
或 32 到 47 之间的一个字符。
您可以通过向 case
添加更多条件来解决此问题:
(case when MCTN.MCTN_NAME LIKE ' _%'
then SUBSTRING(MCTN.MCTN_NAME, 3, LEN(MCTN.MCTN_NAME) - 2)
when ASCII(LEFT(MCTN.MCTN_NAME, 1)) BETWEEN 32 AND 47 AND LEN(MCTN.MCTN_NAME) >= 2
then SUBSTRING(MCTN.MCTN_NAME, 2, LEN(MCTN.MCTN_NAME) - 1)
else MCTN.MCTN_NAME
end) as MCTN_NAME