2016-03-21 166 views
3

我有一個字符串像修剪字符串

WebApp - 10148 

Smart - App - 1458 

預期結果

WebApp 

Smart - App 

我想要的人物修剪掉 - 從正確的數字。

我曾嘗試下面的查詢,結果是這樣的

select LEFT(app+' - ', CHARINDEX(' - ',app+' - ')-1) from repository 

WebApp 
Smart 

誰能幫助我解決這?

+0

'app'是列containig的名字有趣的一種方法文本? –

回答

2

試試這個:

reverse(right(reverse(@string), len(@string) - charindex('-',reverse(@string),1))); 
+0

看起來不錯!我可以在最後調整連字符嗎? – Michael

+0

@邁克爾: - 更新,現在你不會在最後得到連字符。請立即檢查! –

1

只是爲了與rekursive CTE(我會用拉胡爾的回答:-))

DECLARE @tbl TABLE(x VARCHAR(100)); 
INSERT INTO @tbl VALUES('WebApp - 10148'),('Smart - App - 1458'); 

WITH FindHyphens AS 
(
    SELECT x,0 AS StartInx, PATINDEX('% - %',x) AS PosHyphen,SUBSTRING(x,PATINDEX('% - %',x)+1,1000) AS Subst FROM @tbl 
    UNION ALL 
    SELECT x,StartInx+PATINDEX('% - %',Subst),PATINDEX('% - %',Subst),SUBSTRING(Subst,PATINDEX('% - %',Subst)+1,1000) 
    FROM FindHyphens 
    WHERE PATINDEX('% - %',Subst)>0 
) 
,FindLastHyphen AS 
(
    SELECT x, MAX(StartInx+PosHyphen)-1 AS LastPos 
    FROM FindHyphens 
    GROUP BY x 
) 
SELECT SUBSTRING(x,1,LastPos) 
FROM FindLastHyphen