我正在尝试创建一个案例条件,它根据条件删除字符串中的最后一个字符。
ON im.LegacyItem =
CASE
When
right(tr.item,4) = '_old' then left(tr.item,len(tr.item)-4)
when
tr.item <> im.legacyitem then left(tr.item,len(tr.item) -2)
else tr.item
end
AND im.Location=loc.LocationNo
我收到了以下错误。
Msg 537,Level 16,State 3,Line 1 传递给LEFT或SUBSTRING函数的长度参数无效。
但是当我只使用right(tr.item,4) = '_old' then left(tr.item,len(tr.item)-4)
我没有问题。
但是,当我使用
时when tr.item <> im.legacyitem then left(tr.item,len(tr.item) -2)
然后我收到上面的错误
我做错了什么?
答案 0 :(得分:1)
此结果可能是因为该值小于2个字符。 您可以使用以下命令查找是否有任何短于2的值:
SELECT tr.item WHERE len(tr.item) <= 2 FROM 'your source'
您还可以在投射前检查长度:
((len(tr.item) >= 2) AND (tr.item <> 'NotEqual')) then left(tr.item,len(tr.item) -2)
或在现有的两个之前添加另一个'when'子句。
如果有效,请告诉我