sql-传递给LEFT或SUBSTRING函数的无效长度参数错误msg

我正在查询工作.我正在尝试提取停止名称的第二个单词,用空格分隔.

因此,如果站点名称是“ Jane Doe”,我想拉“ Doe”.

我有一个要在sql中定义的字段,它看起来像这样:

[pull the second word] = SUBSTRING([STOP_NAME], (CHARINDEX(' ', [STOP_NAME], 1)) + 1, (CHARINDEX(' ', [STOP_NAME], CHARINDEX(' ', [STOP_NAME], 1) + 1)) - (CHARINDEX(' ', [STOP_NAME], 1)) - 1) 

当我输入时,出现以下错误信息:

Invalid length parameter passed to the LEFT or SUBSTRING function.

我究竟做错了什么?

更新:

我只想拉第二个字.如果站点名称是“ Caroline Jane Doe”,那么我只想拉“ Jane”.

谢谢!

最佳答案
这是因为表达式中的length(3rd)参数计算为负值.
如果单词中至少有两个空格(例如’abc def ghi’),则表达式可以工作;如果只有一个空格(‘abc def’),则表达式下面的部分的值为0,这可以使长度(第3个参数)为负,因此出现错误.

CHARINDEX(”,[STOP_NAME],CHARINDEX(”,[STOP_NAME],1)1))

转载注明原文:sql-传递给LEFT或SUBSTRING函数的无效长度参数错误msg - 代码日志