Sie möchten einen CASE
Ausdruck eines Typs verwenden.
In SQL Server würde der Code folgendermaßen aussehen:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Bearbeiten: Wie in den Kommentaren (und einigen anderen Antworten) angegeben, ist ELSE nicht erforderlich, wenn Sie eine WHERE-Klausel in die Anweisung einfügen.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Dies vermeidet unnötige Updates. In beiden Fällen ist es wichtig, sich daran zu erinnern, dass es andere Optionen als M & W gibt (z. B. NULL) und Sie keine falschen Informationen eingeben möchten. Beispielsweise:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Dies würde alle NULL-Werte (oder andere mögliche Geschlechter) als 'M' ersetzen, was falsch wäre.
Ein paar andere Optionen wären
/*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' );
Und eine prägnantere
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );