SQL Server 中有 LastIndexOf 吗?

新手上路,请多包涵

我正在尝试从涉及获取字符串的 最后一个 索引字符串 中解析出一个值。目前,我正在做一个涉及反转字符串的可怕黑客攻击:

 SELECT REVERSE(SUBSTRING(REVERSE(DB_NAME()), 1,
    CHARINDEX('_', REVERSE(DB_NAME()), 1) - 1))

对我来说,这段代码几乎是不可读的。我刚刚升级到 SQL Server 2016,希望有更好的方法。在那儿?

原文由 AngryHacker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 676
2 个回答

如果您想要最后一个 _ 之后的所有内容,请使用:

 select right(db_name(), charindex('_', reverse(db_name()) + '_') - 1)

如果您想要之前的所有内容,请使用 left()

 select left(db_name(), len(db_name()) - charindex('_', reverse(db_name()) + '_'))

原文由 Gordon Linoff 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试:

 select LEN('tran van abc') + 1 - CHARINDEX(' ', REVERSE('tran van abc'))

所以,”的最后一个索引是:9

原文由 Tien Nguyen Huu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进