在MySQL中将布尔值转换为正号或负号

时间:2013-10-09 17:04:12

标签: mysql

在我的一些MySQL查询中,我有一个计算

(CAST(return_item as SIGNED)*2-1)

基本上这段代码会转换true => 1false => -1,而且效果很好! 我不喜欢它的是它在SQL语句中的可读性。

是否有更清晰的方式来撰写此声明,使其意图更清晰?

return_itemBIT(1),表示系统中的布尔值。

4 个答案:

答案 0 :(得分:3)

如果你想明确你的意图,那么使用条件几乎没有更好的方法:

IF(return_item, 1, -1)

答案 1 :(得分:2)

执行此操作的最标准SQL方法是CASE语句:

CASE return_item WHEN 1 THEN 1 ELSE -1 END

这是非常易读的,并且将在其他数据库产品的用户中运行并熟悉。

由于所讨论的类型可用作布尔值,这也可以,但是可移植性较差(Postgres的boolean类型可行,但MS SQL Server的bit不会):

CASE WHEN return_item THEN 1 ELSE -1 END

答案 2 :(得分:1)

试试这个:

if(return_item=true, 1, -1)

答案 3 :(得分:0)

SELECT POWER(-1, 1-SIGN(return_item))怎么样?