Ви хочете використовувати CASE
вираз певного типу.
У SQL Server код виглядатиме так:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Редагувати: Як зазначено в коментарях (та деяких інших відповідях), ELSE не потрібен, якщо ви додаєте до цього пункту пункт WHERE.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Це дозволяє уникнути зайвих оновлень. У будь-якому випадку важливо пам’ятати, що є інші варіанти, крім M&W (наприклад, NULL), і ви не хочете вводити помилкову інформацію. Наприклад:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Це замінить будь-які NULL (або інші можливі статі) як "M", що було б невірно.
Ще пару варіантів
/*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' );
І більш лаконічний
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );