我正在处理工作查询。我正在尝试提取停止名称的第二个单词,用空格分隔。
因此,如果停止名称是"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))