MySQL布尔值 - 翻转值?

Posted

技术标签:

【中文标题】MySQL布尔值 - 翻转值?【英文标题】:MySQL boolean - flipping the value? 【发布时间】:2011-03-30 06:41:19 【问题描述】:

mysql 使用 TinyINT 作为布尔字段。鉴于 0 和 1 的可能选项,我决定像这样翻转值:

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

现在我很好奇这对于真正的程序员来说是可以接受还是可怕

/我是初学者

【问题讨论】:

【参考方案1】:

为什么不简单地使用:

更新 the_table SET boolean_field = NOT boolean_field 在哪里 ...

让你的意图更容易阅读

【讨论】:

+1 增加可读性,同时(可能)不牺牲速度。【参考方案2】:

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

【讨论】:

@Pratik:我确定这是一个答案(只要它符合 OP 的要求),谢谢您的提及。 @zerkms 很好的答案,尤其是当您使用小的 unsigned int 作为布尔值时 @seddik 为什么“特别”? @zerkms 我不知道它是否适用于布尔值,但它确实适用于 int。

以上是关于MySQL布尔值 - 翻转值?的主要内容,如果未能解决你的问题,请参考以下文章

在单CPU指令中可以在0和1之间翻转位/整数/布尔值的任何可能代码

在python中使用MySQL布尔值

用于存储布尔值的 MySQL 数据类型

用于存储布尔值的 MySQL 数据类型

用于存储布尔值的 MySQL 数据类型

如何将 Postgresql 布尔值转换为 MySQL Tinyint?