美好的一天
我试图在特定字符后删除字符串的一部分。当我使用特定的查询时,它几乎可以工作:
LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode) - 1) AS 'Item Code
我遇到的问题是,当我在结尾添加-1时,我得到一个错误:在LEFT或SUBSTRING函数上传递的长度参数无效。当我删除它时,返回项目代码但添加最后一个' - '我也试图摆脱。这是我要修复的项目代码示例:0C0002AC-GG-VASA =没有' -1'我得到0C0002AC-GG-希望它返回:0C0002AC-GG
由于 `
答案 0 :(得分:1)
试试这个:
LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode + '-VASA') - 1) AS 'Item Code'
答案 1 :(得分:1)
问题是由于您的商品代码很少,可能没有“' -VASA'并且你正在搜索它的位置并再次做-1这是否定的。所以,首先检查你的单词所具有的天气' -VASA'在它与否。 喜欢:
Case when CHARINDEX('-VASA', T1.ItemCode) >=1 Then LEFT(T1.ItemCode, CHARINDEX('-VASA', T1.ItemCode) - 1) Else T1.ItemCode End AS 'Item Code'
答案 2 :(得分:0)
问题是如果-VISA
中没有T1.ItemCode
:
由于负值,CHARINDEX('-VASA', T1.ItemCode)
返回0而LEFT(T1.ItemCode, 0 - 1)
会出错。