首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL SELECT子句中将整数转换为布尔值?

如何在MySQL SELECT子句中将整数转换为布尔值?
EN

Database Administration用户
提问于 2012-02-09 19:03:34
回答 7查看 159.7K关注 0票数 39

我是新来的,所以对我好点。我有以下情况:

为了简单起见,我有许多表在我的MySQL数据库中用视图表示。我的问题是,在这个视图中需要一个值,表示它是一种事件还是另一种事件(简单的布尔值),我试图用以下方法实现:

代码语言:javascript
复制
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`

结果表示为int,因此由实体框架读取。问题是,我确实需要一个布尔返回值,我试图用以下方法实现这个值:

代码语言:javascript
复制
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` 

这导致了一个错误,这个错误在MySQL工作台中不会显示给我(我只收到一个恼人的“您在.中有错误”)。

你们能帮帮我吗?

我试图在我的应用程序中解决这个问题,但是我真的希望在数据库中解决这个问题,因为它以后会被其他软件使用。

EN

回答 7

Database Administration用户

回答已采纳

发布于 2012-02-09 19:06:07

尝试使用IF()职能:

代码语言:javascript
复制
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, TRUE, FALSE) 
FROM ...

代码语言:javascript
复制
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 1, 0) 
FROM ...

即使没有IF()函数,也可以运行

代码语言:javascript
复制
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)]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

因为BOOLEAN不在这个列表中,所以CAST()CONVERT()永远不能返回它

您可以使用IF()函数生成字符串。

代码语言:javascript
复制
SELECT IF(`gu`.`StoppingUnitEventME`=`ese`.`MonitoringElement`, 'TRUE', 'FALSE') 
FROM ...
票数 40
EN

Database Administration用户

发布于 2013-01-11 07:29:58

您可以使用非常简单的方法,而无需使用冗余IF()语句:

代码语言:javascript
复制
... `YourField` IS NOT NULL AS `YourField` ...
票数 15
EN

Database Administration用户

发布于 2017-12-02 00:27:46

您还可以尝试经典的布尔强制:

不选择不(随便);

这样做的好处是,它自然地保留了零,而这里的大多数答案却没有。

如果您想将NULL强制为FALSE,那么请执行以下操作

选择IFNULL(NOT (随便),FALSE);

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/12569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档