首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >T-SQL :在Dash最后出现之前获取所有文本

T-SQL :在Dash最后出现之前获取所有文本
EN

Stack Overflow用户
提问于 2018-08-29 05:19:11
回答 1查看 76关注 0票数 1

我被困在试着把所有的文本取到(但不包括)最后的破折号。

我可以找到一个将文本取到1冲刺左边的解决方案(例如。SUBSTRING(@ID,1,CHARINDEX('-',@ID) -1),甚至说第二个破折号,但问题是,我的列表中的破折号相差很大。

  • 例如:
  • ID
  • ABC-DEF-GHI-001
  • ABC-DEF-2
  • ABC-DEF-GHI-JKL-00003
  • ABC-DEF-GH-4
  • ABC-123-DEF-008

从以上我想取的,所有的文字左边的最后一个破折号。

  • 美国广播公司-DEF-GHI
  • ABC-DEF
  • ABC-DEF-GHI-JKL
  • ABC-DEF-GH
  • ABC-123-DEF

任何指南针都会赏识。

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 05:34:20

一个技巧,我们可以在这里找到第一次出现破折号在反向字符串。然后,使用该索引来偏移整个字符串的子字符串,但从最初的开始开始。

代码语言:javascript
运行
复制
SELECT
    col,
    LEFT(col, LEN(col) - CHARINDEX('-', REVERSE(col))) AS col_sub
FROM yourTable
WHERE
    col LIKE '%-%';

Demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52069938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档