2014-09-22 101 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'