我正在尝试从SQL-Server 2017中的表Project
获取最后一个字。
我的代码如下:
select
reverse(substring(reverse(ProjectDescription),1, charindex(' ', reverse(ProjectDescription)) -1)) as LastWord
from Project
如果我要求将表隔离到一行,那么代码就可以工作,但是我需要字段ProjectDescription
中所有行的最后一个字。
当我运行上面的代码时,我得到了以下错误:
传递给LEFT或SUBSTRING函数的长度参数无效。
请有人能帮助我,我在哪里出错。
4条答案
按热度按时间eaf3rand1#
迟交的答复,仅作为指导发布。
不需要拆分字符串。您的错误仅仅是因为charindex()返回了零。简单的修复方法是在charindex()中添加一个“fail-safe”,方法是在字符串中添加一个空格,从而确保命中。
此外,请注意Sean的建议。几年前我也有一个类似的分割功能,对性能的提高感到惊讶。
示例
退货
xqnpmsa82#
我使用一个表值函数的组合来将列表拆分成一个有序列表。然后使用rownumber只取最后一个。
这是一个函数,有很多这样的函数.
这是设置好的,所以我有一张table要用。你会把这个分出来作为你的table。
下面是用于提取最后一个单词的SQL:
结果:
knpiaxh13#
您可以使用以下简单函数:
并称之为:
其得到:
flvtvl504#
这是我想出的最简单的办法: