2010-02-09 14 views
7

È possibile utilizzare l'istruzione case all'interno di una query di aggiornamento? Devo fare qualcosa del genere: se il nome della persona inizia con "S", aggiungi "1", altrimenti aggiungi "2".Utilizzo dell'istruzione case nella query di aggiornamento

ho provato questo in SQL Server e non ha funzionato

 
UPDATE PERSON 
CASE 
WHEN NAME LIKE 'S%' THEN SET NAME = NAME + '1' 
ELSE SET NAME = NAME + '2' 
END 

risposta

10

solo per aggiungere una variante leggermente diversa che io tendo a preferire (fino a preferenze personali).

UPDATE Person 
SET Name = Name + CASE WHEN Name LIKE 'S%' THEN '1' ELSE '2' END 

Mi piace questo perché consente di risparmiare ripetendo il "nome +" bit per ogni condizione - in questo caso si tratta di niente di grave, ma in altri scenari con più condizioni può essere eccessivamente ripetitivo

7

CASE WHEN restituisce un espressione, non una dichiarazione. È possibile utilizzare in questo modo:

 
UPDATE PERSON 
SET NAME = CASE WHEN NAME LIKE 'S%' THEN NAME + '1' 
            ELSE NAME + '2' 
      END 
2

sarà:

update person 
set name = case when name left(name,1) = 'S' then name + '1' else name + '2' end 
Problemi correlati