传递给sql server中的left或substring函数的无效长度参数 [英] invalid length parameter passed to the left or substring function in sql server

查看:1041
本文介绍了传递给sql server中的left或substring函数的无效长度参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

create procedure getdata
@subcomponent varchar(50)
as
begin

declare @var varchar(50) =@subcompname
;WITH CTE AS (
    SELECT Sno, Comp, SubComp,
    LEFT(FromValue, PATINDEX('%[0-9]%', FromValue)-1) As FromLetter,
    CAST(RIGHT(FromValue, LEN(FromValue) - (PATINDEX('%[0-9]%', FromValue)-1)) as int) As FromNumber,
    LEFT(ToValue, PATINDEX('%[0-9]', ToValue)-1) As ToLetter,
    CAST(RIGHT(ToValue, LEN(ToValue) - (PATINDEX('%[0-9]%', ToValue)-1)) as int) As ToNumber
    FROM
    (
    SELECT Sno, Comp, SubComp,
       LEFT(SubComp,
          CASE WHEN CHARINDEX(' to ', SubComp) >; 0 THEN
            CHARINDEX('to ', SubComp)-1
          WHEN CHARINDEX(',', SubComp) >; 0 THEN
            CHARINDEX(',', SubComp)-1
          END
       ) FromValue,
       RIGHT(SubComp,
          CASE WHEN CHARINDEX(' to ', SubComp) > 0 THEN
            LEN(SubComp) - (CHARINDEX(' to ', SubComp) + 3)
          WHEN CHARINDEX(',', SubComp) > 0 THEN
            CHARINDEX(',', SubComp)-1
          END
       ) ToValue
    FROM T
    ) InnerQuery
 )

 SELECT Sno, Comp, SubComp
 FROM CTE
 WHERE LEFT(@Var, PATINDEX('%[0-9]%', @Var)-1) BETWEEN FromLetter AND ToLetter
 AND CAST(RIGHT(@Var, LEN(@Var) - (PATINDEX('%[0-9]%', @Var)-1)) as int) BETWEEN FromNumber And ToNumber



这是我的程序... .........



我收到错误....


this is my procedure ............

I am getting error ....

引用:

无效长度参数传递给sql server中的左边或子字符串函数

"invalid length parameter passed to the left or substring function in sql server"



请帮帮我...


please help me...

推荐答案

我真的无法回答,但我可以告诉你它与函数中的-1有关,这是一篇确定可以真正帮助你的文章



http://www.sql-server-helper.com/error- messages / msg-536.aspx [ ^ ]



尝试一下,也许吧你的回答
I cant really answer but I can tell you that it has to do with the -1 in the function, here is an article that im sure could really help you

http://www.sql-server-helper.com/error-messages/msg-536.aspx[^]

try it out, maybe it holds your answer


这个错误与你的SP中使用的LEFT函数有关,问题可能是第二个参数值没有回归正整数(请注意:PATINDEX返回还有NULL值)



这些链接可能对你有所帮助:

https://msdn.microsoft.com/en-IN/library/ms177601.aspx [ ^ ]

https://msdn.microsoft.com/en-us/library/ms188395.aspx [ ^ ]
This error is related to "LEFT" function used in your SP, the issue probably may be that the second parameter value is not returing a positive integer (Please Note : PATINDEX returns NULL value as well)

These links might help you further :
https://msdn.microsoft.com/en-IN/library/ms177601.aspx[^]
https://msdn.microsoft.com/en-us/library/ms188395.aspx[^]


这篇关于传递给sql server中的left或substring函数的无效长度参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆