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



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

因此,如果停止名称是"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( 参数计算为负值。如果单词中至少有 2 个空格,您的表达式就会起作用(例如"abc def ghi"(,如果只有一个空格("abc def"(,则表达式下方部分的计算结果为 0,这可能会使长度(第 3 个参数(为负,从而导致错误。

CHARINDEX(' ', [STOP_NAME],

CHARINDEX(' ', [STOP_NAME], 1( + 1((

为什么不直接选择这样的东西呢?取字符串的 LEN,减去空格的 CHARINDEX 的起始位置,然后将其插入 SUBSTRING 的起始位置:

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

相关内容

  • 没有找到相关文章

最新更新