如果在开关内声明

时间:2010-09-28 11:01:49

标签: sql sql-server tsql

我知道我只是在想这里的逻辑错误,但我如何实现以下目标:

update @table   
             set   column1 = case 
               when column1 <> '' 
                   then rtrim(column1) + ', ' + rtrim(column2)--if statement here 
               else     rtrim(column2)              
               end
            from @othertable

我基本上想检查rtrim(第2列)='value',然后用其他东西替换它。我理解这是在switch语句中,所以如何实现呢?

3 个答案:

答案 0 :(得分:1)

  update @table   
         set   column1 = case 
           when column1 <> '' 
               then rtrim(column1) + ', ' + 
              case 
              when column2 = 'value' 
                 then rtrim(column2) 
              else ... 
              end
           else  rtrim(column2)              
           end
        from @othertable

答案 1 :(得分:0)

可能你不需要任何开关和if子句:

update @table set column1 = rtrim(isnull(nullif(column1,'') + ', ', '')) + rtrim(column2)

答案 2 :(得分:0)

REPLACE声明中使用CASE

例如:REPLACE(rtrim(column2),'value','newValue');

有关REPLACE

的详细信息,请参阅MSDN