2012-01-10 44 views
2

我想寫一個函數將切斷字段中的前4個字符。例如,如果該字段的值是ABC_123_EFG它將返回123_EFG。我試圖使用LEFTLEN函數的組合,但沒有取得任何成功。使用帶LEN功能的LEFT函數

以下是我認爲它應該是...

RIGHT(code, LEN(code) - 4) AS code_concat 

但它失敗,此錯誤

Msg 536, Level 16, State 2, Line 2 
Invalid length parameter passed to the RIGHT function. 

我在做什麼錯?這是完成這個最好的方法嗎?

+0

將所有值始終至少爲4個字符長嗎? – Greg 2012-01-10 15:43:03

+0

*所有行中的代碼至少有4個字符長度嗎? – AakashM 2012-01-10 15:43:58

+0

只是看着它,它可以爲空... opps – 2012-01-10 15:45:03

回答

6

使用substring

substring(code, 5, 1000) 

或者,如果它是一個varchar(max)

substring(code, 5, len(code)) 
+2

除了它應該是5,而不是4.字符串函數是基於1的。 – 2012-01-10 15:46:05

+0

@ liho1eye - 太棒了! – Eric 2012-01-10 15:49:55

3

試試這個..

select isnull(RIGHT(code, LEN(code) - 4),'') AS code_concat 
1

stuff是不錯的小功能修改時非常有用字符串。

select stuff(code, 1, 4, '')