Bir CASE
tür ifade kullanmak istiyorsunuz .
SQL Server'da kod şöyle görünecektir:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Düzenleme: Yorumlar (ve diğer bazı cevaplar) belirtildiği gibi ELSE ifadeye bir WHERE yan tümcesi koyarsanız gerekli değildir.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Bu gereksiz güncellemeleri önler. Her iki durumda da önemli olan, M & W (örneğin NULL) dışında seçenekler olduğunu ve yanlış bilgi vermek istemediğinizi hatırlamaktır. Örneğin:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Bu, NULL'lerin (veya diğer olası cinsiyetlerin) yanlış olan 'M' olarak değiştirilir.
Birkaç seçenek daha
/*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' );
Ve daha özlü
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );