Vuoi usare CASE
un'espressione di qualche tipo.
In SQL Server il codice sarebbe simile al seguente:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Modifica: come indicato nei commenti (e in alcune delle altre risposte) l'ELSE non è necessario se si inserisce una clausola WHERE sull'istruzione.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Questo evita aggiornamenti inutili. La cosa importante in entrambi i casi è ricordare che esistono opzioni diverse da M & W (NULL per esempio) e che non si desidera inserire informazioni errate. Per esempio:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Ciò sostituirà qualsiasi NULL (o altri possibili sessi) come 'M' che sarebbe errato.
Un paio di altre opzioni sarebbero
/*Simple form of CASE rather than Searched form*/
UPDATE TableName
SET gender = CASE gender
WHEN 'M' THEN 'W'
WHEN 'W' THEN 'M'
END
WHERE gender IN ( 'M', 'W' );
E un più conciso
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );