我是新来的,所以对我好点。我有以下情况:
为了简单起见,我有许多表在我的MySQL数据库中用视图表示。我的问题是,在这个视图中需要一个值,表示它是一种事件还是另一种事件(简单的布尔值),我试图用以下方法实现:
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`结果表示为int,因此由实体框架读取。问题是,我确实需要一个布尔返回值,我试图用以下方法实现这个值:
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` 这导致了一个错误,这个错误在MySQL工作台中不会显示给我(我只收到一个恼人的“您在.中有错误”)。
你们能帮帮我吗?
我试图在我的应用程序中解决这个问题,但是我真的希望在数据库中解决这个问题,因为它以后会被其他软件使用。
发布于 2012-02-09 19:06:07
尝试使用IF()职能:
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, TRUE, FALSE)
FROM ...或
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 1, 0)
FROM ...即使没有IF()函数,也可以运行
mysql> select ('rolando' = 'rolando') str_compare;
+-------------+
| str_compare |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql>使用mysql客户端生成0或1
CAST()和CONVERT()只能接受并返回以下类型的BINARY[(N)]CHAR[(N)]DATEDATETIMEDECIMAL[(M[,D])]SIGNED [INTEGER]TIMEUNSIGNED [INTEGER]因为BOOLEAN不在这个列表中,所以CAST()或CONVERT()永远不能返回它
您可以使用IF()函数生成字符串。
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 'TRUE', 'FALSE')
FROM ...发布于 2013-01-11 07:29:58
您可以使用非常简单的方法,而无需使用冗余IF()语句:
... `YourField` IS NOT NULL AS `YourField` ...发布于 2017-12-02 00:27:46
您还可以尝试经典的布尔强制:
不选择不(随便);
这样做的好处是,它自然地保留了零,而这里的大多数答案却没有。
如果您想将NULL强制为FALSE,那么请执行以下操作
选择IFNULL(NOT (随便),FALSE);
https://dba.stackexchange.com/questions/12569
复制相似问题