2010-08-16 129 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