lev*_*bra 1 t-sql case sql-server-2008
我有以下查询,我用来更新性别列,如果它设置为男性,然后更新为M,为女性,更新到F
该声明第一次正常运行.
UPDATE [People].[People]
SET GENDER = CASE WHEN GENDER = 'Male' THEN 'M'
WHEN GENDER = 'Female' THEN 'F' END WHERE Id=40
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果性别已经是'M',那么当再次运行该语句时,'M'被设置为NULL
我可以在下面做,但它似乎有点软糖
UPDATE [People].[People]
SET GENDER = CASE WHEN GENDER = 'Male' THEN 'M'
WHEN GENDER = 'Female' THEN 'F'
WHEN GENDER = 'M' THEN 'M'
WHEN GENDER = 'F' THEN 'F'
END WHERE Id=40
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议吗?
谢谢
向WHERE子句添加另一个条件:
UPDATE [People].[People]
SET GENDER = CASE WHEN GENDER = 'Male' THEN 'M'
WHEN GENDER = 'Female' THEN 'F' END
WHERE Id=40
AND NOT GENDER IN ('M', 'F')
Run Code Online (Sandbox Code Playgroud)
这样可以避免再次更新行.