尝试执行以下查询时出现以下错误:
'传递给LEFT或SUBSTRING函数的长度参数无效'
select A.NUMBER,
SUBSTRING(A.DESCRIPTION,
CHARINDEX(','+CAST(A.Description as VARCHAR(255)) + ',','from')+4,
CHARINDEX(','+CAST(A.Description as VARCHAR(255))+ ',','to')- 1)
from dbo.ACTIVITYM1 A
where A.DESCRIPTION like 'Reassignment from%'
架构详细信息:
请让我知道,这个错误的原因是什么。
A.Description包含如下内容
"从PSM_Support重新分配到PPM_Support" 我试图在1列中获取PSM_Support,在另一列中获取PPm_Support。
答案 0 :(得分:0)
这是你的substring
分解:
SELECT SUBSTRING(
A.DESCRIPTION,
CHARINDEX(','+CAST(A.Description as VARCHAR(255))+',','from')+4, -- start
CHARINDEX(','+CAST(A.Description as VARCHAR(255))+ ',','to')- 1 -- length
)
我会通过将它放入自己的列来检查第三个参数(长度)。它必须是> 0
答案 1 :(得分:0)
您已正确理解CHARINDEX的语法。你必须从'中搜索或者'到'在描述中但没有来自'来自'或者'到'。我希望你能在这里理解这个问题。只需反转它们就可以了解它。