2014-09-22 113 views
0

美好日子在特定字符後刪除部分字符串

我想在特定字符後刪除字符串的一部分。當我使用特定的查詢它幾乎工程:

LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode) - 1) AS 'Item Code 

我的問題是,當我加-1最後我得到一個錯誤:在左或子字符串函數傳遞無效的長度參數。當我刪除它時返回商品代碼,但添加最後一個' - '我也試圖擺脫。這是一個項目的代碼,我試圖解決一個例子:0C0002AC-GG-VASA =沒有「-1」我得到0C0002AC-GG-希望它返回:0C0002AC-GG

感謝 `

+0

爲什麼不'REPLACE(T1.ItemCode,' - VASA','')'? – 2014-09-22 10:30:42

+0

這也有竅門。謝謝 – 2014-09-22 10:37:14

+0

@MikhailTimofeev OP正試圖刪除特定字符後的字符串。替換該字符將不會在該定義內工作 – 2014-09-22 10:37:16

回答

1

試試這個:

LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode + '-VASA') - 1) AS 'Item Code' 
+0

非常感謝,工作100% – 2014-09-22 10:37:45

0

的問題是,如果你沒有在T1.ItemCode-VISACHARINDEX('-VASA', T1.ItemCode)返回0和LEFT(T1.ItemCode, 0 - 1)給人錯誤的,因爲負值。

1

問題是由於您的物品代碼很少,可能沒有「-VASA」這個詞,而您正在搜索其位置,並再次做-1,這是負面的。所以首先檢查一下天氣情況,你的單詞是否有'-VASA'。 like:

Case when CHARINDEX('-VASA', T1.ItemCode) >=1 Then LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode) - 1) Else T1.ItemCode End AS 'Item Code' 
相關問題