更新case语句语法问题

时间:2012-06-15 20:43:22

标签: tsql

我正在试图弄清楚为什么这种语法格式不正确,我不这样做:

update Entry
set Name =  Case charindex('/', reverse(Name))
                when charindex('/', reverse(Name)) > 0 then right(Name, charindex('/', reverse(Name)) -1)
                when charindex('/', reverse(Name)) < 0 then Name
            End

1 个答案:

答案 0 :(得分:2)

试试这个:

update Entry 
set Name =  Case 
                when charindex('/', reverse(Name)) > 0 then right(Name, charindex('/', reverse(Name)) -1) 
                when charindex('/', reverse(Name)) < 0 then Name 
            End 

编辑:或者:

update Entry 
set Name =  Case SIGN(charindex('/', reverse(Name)) )
                when 1 then right(Name, charindex('/', reverse(Name)) -1) 
                when -1 then Name 
            End 

在WHEN之前使用表达式的CASE将该表达式依次与WHEN之后的每个表达式进行比较,直到找到匹配为止。紧接着WHE后面的WHEN检查WHEN之后的每个表达式,直到找到一个计算结果为TRUE的表达式。在第一次使用中,表达式必须具有可比性。在第二种情况下,表达式必须评估为T / F.