Vous souhaitez utiliser une CASE
expression d'un certain type.
Dans SQL Server, le code ressemblerait à ceci:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Edit: Comme indiqué dans les commentaires (et certaines des autres réponses), ELSE n'est pas nécessaire si vous mettez une clause WHERE sur la déclaration.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Cela évite les mises à jour inutiles. La chose importante dans les deux cas est de se rappeler qu'il existe des options autres que M&W (NULL par exemple) et que vous ne voulez pas mettre des informations erronées. Par exemple:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Cela remplacerait tout NULL (ou tout autre sexe possible) par «M», ce qui serait incorrect.
Quelques autres options seraient
/*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' );
Et un plus concis
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );