根据条件消除最后2个字符

时间:2016-04-08 19:55:22

标签: sql-server tsql case conditional-statements

我使用这个条件以便比较字符串并消除最后2个字符

right(tr.item,2) = '%bx' then left(tr.item,len(tr.item)-2)

但我想要多个条件并消除最后2个字符。

我试图执行此声明

right(tr.item,2) like ('%bx','%cx','%ax') then left(tr.item,len(tr.item)-2)

但我收到了错误

  

Msg 102,Level 15,State 1,Line 11
  ','。

附近的语法不正确

请建议实现这一目标的最佳方式。

3 个答案:

答案 0 :(得分:0)

试试这个..你需要一个OR

  ((right(tr.item,2) like ('%bx'))
   or 
  (right(tr.item,2) like ('%cx'))
  or
 (right(tr.item,2) like ('%ax')))
  then left(tr.item,len(tr.item)-2)

答案 1 :(得分:0)

我想你想要这个逻辑

(case when right(tr.item, 2) in ('bx', 'cx', 'ax')
     then left(tr.item, len(tr.item) - 2)
     else tr.item
 end)

如果您使用like,则不需要通配符(ala right())。 SQL中的条件逻辑是通过case表达式提供的。

答案 2 :(得分:0)

由于您使用RIGHT功能,我认为您不需要'%'。所以你可以这样做:  对(tr.item,2)IN(' bx',' cx',' ax')