从最后一个短划线切割字符

时间:2014-11-28 13:11:15

标签: sql string tsql sql-server-2012

所以我有一个栏目如下:

String
PPS1PS
PPS1PS - INVEM
PPS1PS - INVEM - ABCD

我需要做的是剪切字符串中的最后一个“ - ”并显示最终字符。所以上面应该变成:

String
PPS1PS
INVEM
ABCD

在我的脑海里挣扎着怎么做。到目前为止,我有以下内容:

DECLARE @String VARCHAR(50)
SET @String = 'PPS1PS - INVEM - ABCDE'

select @String

select LTRIM(RIGHT(@String,CHARINDEX(' ',REVERSE(@String))))

对于列中的最后两个,这是好的。但是,如果没有“ - ”会发生什么,我该如何迎合呢?

由于

2 个答案:

答案 0 :(得分:3)

试试这个:

SELECT Ltrim(Parsename(Replace('PPS1PS - INVEM - ABCD', '-', '.'), 1)) 

SELECT Ltrim(Parsename(Replace(YourColumn, '-', '.'), 1)) 
From   YourTable

如有必要,您可以添加Rtrim

注意:如果您的字符串中有超过3个-,它将无法正常工作。 查看parsename here的详细信息。

答案 1 :(得分:2)

您只需使用case声明修改查询:

SELECT (CASE WHEN @String like '%-%'
             THEN LTRIM(RIGHT(@String, CHARINDEX(' ', REVERSE(@String))))
             ELSE @String
        END)