2014-10-03 18 views
0

我想在一列「E.Notes」Retun X形

例串之後的字符串爲以下4個字符返回「代碼: ABCD」

目標輸出 'ABCD'

我已經試過無濟於事;-(

CASE WHEN CHARINDEX('<strong>Code:</strong> ', E.Notes) > 0 THEN 
LEFT(E.Notes, CHARINDEX('<strong>Code:</strong> ', E.Notes) 4) 
ELSE '' END 
+0

是'Code:'是固定在你的字符串? – 2014-10-03 10:42:05

回答

0

使用SUBSTRING()RIGHT()應該沒問題。

CASE WHEN CHARINDEX('<strong>Code:</strong> ', E.Notes) > 0 THEN 
SUBSTRING(E.Notes, CHARINDEX('<strong>Code:</strong> ', E.Notes) + LEN('<strong>Code:</strong> '), 255) 
ELSE '' END 

CASE WHEN CHARINDEX('<strong>Code:</strong> ', E.Notes) > 0 THEN 
RIGHT(E.Notes,LEN(E.Notes) + 1 - LEN('<strong>Code:</strong>') - CHARINDEX('<strong>Code:</strong> ', E.Notes)) 
ELSE '' END 

,你可以使用RTRIM()LTRIM()來獲得空間的RID。

0

試試這個

DECLARE @Notes VARCHAR(200) = '<strong>Code:</strong> ABCDkkkk' 

SELECT CASE 
     WHEN CHARINDEX('Code:', @Notes) > 0 
      THEN RIGHT(@Notes, LEN(@Notes) - CHARINDEX('Code:', @Notes) - 14) 
     ELSE '' 
     END 

EDITED

通過OP的需求從字符串只得到第一個4個字符。

SELECT CASE 
     WHEN CHARINDEX('Code:', @Notes) > 0 
      THEN LEFT(RIGHT(@Notes, LEN(@Notes) - CHARINDEX('Code:', @Notes) - 14), 4) 
     ELSE '' 
     END 
+0

謝謝,但不幸的是它不是下一個4,而是字符串後面的所有字符。 – Mike 2014-10-03 15:09:05

+0

@Mike:但你沒有提到它。無論如何,我已經修改我的答案。請檢查一下。 – 2014-10-04 12:07:01

相關問題