2010-08-16 142 views
11

MySQL使用TinyINT作为布尔型字段。由于0和1的可能的选择,我决定,我要翻转这样的价值观:MySQL布尔值 - 翻转值?

UPDATE table 
SET boolean_field = ABS(boolean_field - 1) 
WHERE Circle-K = 'Strange things are afoot' 

所以,你要么去1 - > 0 - > ABS(0)= 0

或0 - > -1 - > ABS(-1)= 1

现在我很好奇,如果这是接受怕怕到真正的程序员?

/我是初学者

回答

44

为什么不能简单地用:

 
UPDATE the_table 
    SET boolean_field = NOT boolean_field 
WHERE ... 

让你的意图了很多更容易阅读

+0

+1可增加可读性,同时(可能)不会牺牲速度。 – paxdiablo 2010-08-16 05:32:02

+0

+1:不知道这是否有效 - 在4.1上确认 – 2010-08-16 05:36:34

12

您还可以使用field = 1 - fieldfield =! field

+0

这实在是一个评论,而不是一个问题的答案。请使用“添加评论”为作者留下反馈。 – Pratik 2012-08-21 11:16:53

+8

@Pratik:我相信这是一个答案(只要它符合OP的要求),谢谢你的提及。 – zerkms 2012-08-21 18:02:55

+0

field =!字段,这是一个正确的答案。 – rishad2m8 2016-10-31 13:15:57