Sql 传递给左或子字符串函数的长度参数无效错误消息

Sql 传递给左或子字符串函数的长度参数无效错误消息,sql,substring,qsqlquery,Sql,Substring,Qsqlquery,我正在查询工作。我正在尝试提取站点名称的第二个单词,用空格分隔 所以如果站点名是“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(' '

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

所以如果站点名是“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”


谢谢

为什么不做这样的事情呢?取字符串的LEN,减去空间的CHARINDEX的起始位置,并将其插入子字符串的起始位置:

[pull the second word] =
SUBSTRING([STOP_NAME],(CHARINDEX(' ',[STOP_NAME], 1)) + 1, LEN([STOP_NAME]) - CHARINDEX(' ',[STOP_NAME], 1))
这是因为表达式中的length(第三)参数的计算结果为负值。 如果单词中至少有2个空格(例如“abc def ghi”),如果只有一个空格(“abc def”),则表达式的计算结果为0,这会使长度(第3个参数)为负值,从而导致错误


CHARINDEX(“”,[STOP\u NAME],CHARINDEX(“”,[STOP\u NAME],1)+1))

谢谢你解释我做错了什么!!如果答案有帮助,请别忘了投赞成票。。谢谢你的建议!如果我只有两个单词,比如“Jane Doe”,这个方法肯定有效。但是,如果我有多个单词,比如“Caroline Jane Doe”,并且我想拉第二个单词“Jane”,它将不起作用,因为它拉整个“Jane Doe”。你是对的,它只返回第一个空格字符之后的数据。