Sql server 查询“传递给LEFT或SUBSTRING函数的长度参数无效”时出错
您好,在下面的查询中,我遇到了传递给LEFT或SUBSTRING函数的长度参数无效的问题。你能帮我解决这个错误吗?这样我就可以进行查询了Sql server 查询“传递给LEFT或SUBSTRING函数的长度参数无效”时出错,sql-server,tsql,Sql Server,Tsql,您好,在下面的查询中,我遇到了传递给LEFT或SUBSTRING函数的长度参数无效的问题。你能帮我解决这个错误吗?这样我就可以进行查询了 select substring( a.ProcessInstanceDescription, charindex('http://', a.ProcessInstanceDescription ), charindex('KeyInstr', a.ProcessInstanceDescription ) - ch
select
substring(
a.ProcessInstanceDescription,
charindex('http://', a.ProcessInstanceDescription ),
charindex('KeyInstr', a.ProcessInstanceDescription )
- charindex('http://', a.ProcessInstanceDescription )),
c.StreamName AS Category,
ProcessInstanceAppianID as jobId,
a.ProcessInstanceName,
a.ProcessInstanceTargetDate AS TargetDate,
a.ProcessInstanceDescription as TaskDescription,
b.Name as department,
SUBSTRING(
ProcessInstanceName,
NULLIF(
PATINDEX('%[0-9][0-9][0-9][0-9][0-9]%',ProcessInstanceName),
0),
7) as code
from
InternalUseOnly..ProcessInstance a
join InternalUseOnly..Departments b
on b.KeyDepartment = a.KeyDepartmentEntered
AND b.updoperation < 2
join InternalUseOnly..ProcessStream c
on c.KeyProcessStream = a.KeyProcessStream
and c.updoperation < 2
where
ProcessInstanceCompleted is null
and a.KeyProcessStream in (330)
and a.updoperation < 2
我在上面附上了一张图片。我只想从任务描述中获取URL。您能否更正此查询或给我一个精确的查询以执行相同的长度参数,因为子字符串始终是参数3。
只有当此参数为时,才能使查询更具可读性?。。这是一张表格,你能给我们举一个表格记录的例子吗?可能是ProcessInstanceName中的解决方案长度错误…我已经为您编辑了整个查询。您可以给我整个查询,以便我可以插入它,并检查我是否能够获得URL或URL的唯一列吗not@Anoop:正如奥兹伦所说,你如何防范这个错误取决于你想做什么。在ProcessInstanceDescription中找不到“KeyInstr”时,您想做什么?也就是说,作为子字符串的结果,您希望返回什么?@Anoop:另外,如果Ozren只是给您整个查询,您会学到什么吗?我希望得到子字符串中的URL,并将其返回到名为URL的其他列中。你能给我一个确切的问题来解决这个问题吗?@Anoop:不要把它当成个人问题,但这不是为了得到即时的解决方案。在这里,您可以找到查询的错误以及一种或几种修复方法。我相信这最后的编辑可以帮助你,如果你想做你的工作权利。
charindex('KeyInstr', a.ProcessInstanceDescription )
- charindex('http://', a.ProcessInstanceDescription )
CASE
WHEN charindex('KeyInstr', a.ProcessInstanceDescription) != 0 THEN
charindex('KeyInstr', a.ProcessInstanceDescription )
- charindex('http://', a.ProcessInstanceDescription )
ELSE 0 END
SELECT
CASE
WHEN charindex('KeyInstr', a.ProcessInstanceDescription) != 0 THEN
substring(
a.ProcessInstanceDescription,
charindex('http://', a.ProcessInstanceDescription ),
charindex('KeyInstr', a.ProcessInstanceDescription )
- charindex('http://', a.ProcessInstanceDescription ))
ELSE 0 END,
...