所以我有一个栏目如下:
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))))
对于列中的最后两个,这是好的。但是,如果没有“ - ”会发生什么,我该如何迎合呢?
由于
答案 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)