2010-09-28 4 views
0

Je sais que je ne fais que penser de la logique tout faux ici, mais comment puis-je obtenir les résultats suivants:Si la déclaration dans l'interrupteur

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

Je veux essentiellement vérifier si la « valeur » = de rtrim (colonne 2) alors remplacez-le par autre chose. Je comprends que c'est dans une déclaration de commutateur, alors comment cela serait-il réalisé?

Répondre

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 
+0

Beaucoup de tha nks, cela a résolu mon problème. –

0

peut vous être ne pas besoin de commutateur et si la clause:

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

Utilisez un REPLACE au sein de votre déclaration CASE

par exemple: REPLACE(rtrim(column2),'value','newValue');

Référez-MSDN pour plus de détails on REPLACE