获取子字符串,直到从右到左SQL开始的特定字符

时间:2015-06-09 06:46:10

标签: sql-server tsql

我有一个字符串列,我需要找到子字符串,直到第一个' - '找到了。

示例栏ELOT-IGS-2。我需要得到" 2"作为输出。 这些列来自表,因此我无法将变量声明为固定字符串。

我尝试了LOCATESUBSTRING_INDEX,但没有一个是在函数中构建的。

我也试过RIGHT(ID_BETSLIP,CHARINDEX('-',ID_BETSLIP)-1)但是当我有2次&#34时,这不起作用 - "

有没有人有想法?

4 个答案:

答案 0 :(得分:2)

DECLARE @t varchar(20) = 'ELOT-IGS-2'
select REVERSE(SUBSTRING(reverse(@t),0,CHARINDEX ('-',REVERSE(@t))))

答案 1 :(得分:1)

select RIGHT(<your Field>, CHARINDEX('-',REVERSE(<your Field>))-1)

答案 2 :(得分:0)

  1. 基于@ mohan111解决方案,您可以添加REVERSE以获得所需

    DECLARE @t varchar(20)=&#39; ELOT-IGS-2&#39; 选择REVERSE(SUBSTRING(反向(@t),0,CHARINDEX(&#39; - &#39;,REVERSE(@t))))

    • 一旦你获得@ mohan111解决方案,你应该自己完成这个!为了您自己的改进,您不能要求一切:-(一旦您获得了几乎所需的解决方案,现在是时候尝试自己改进它了。请检查此URL,并且每次需要解析一个字符串,从这里开始:-)尝试检查功能,也许你会找到解决方案。 https://msdn.microsoft.com/en-us/library/ms181984.aspx
  2. REVERSE查询和大多数字符串解析函数在SQL Server中都不是很好的解决方案,在大多数情况下,最好使用SQLCLR函数来执行此操作。

答案 3 :(得分:0)

最简单的是

select SUBSTRING(reverse(ELOT-IGS-2),0,charindex('-',reverse(ELOT-IGS-2)))