MySQL:返回“0”和“1”而不是“假”和“真”
Posted
技术标签:
【中文标题】MySQL:返回“0”和“1”而不是“假”和“真”【英文标题】:MySQL: return "0" & "1" rather than "false" & "true" 【发布时间】:2016-06-12 13:27:39 【问题描述】:我需要返回true
或false
而不是1
和0
,使用以下查询:
select if(u.id is null,false,true) status
from user u
limit 10
上述查询返回值为 0 或 1 的 status
而不是 true
和 false
,
有没有办法解决这个问题?
【问题讨论】:
见9.1.5 Boolean Literals。 True/False vs 0/1 in mysql 【参考方案1】:我刚刚在 lua 中遇到了类似的问题。出于某种原因,如果表列类型是“tinyint”并且您调用 1 或 0,它将返回 true 和 false。如果将列类型更改为“int”,它将在 lua 中调用并返回 1 和 0。
旧帖子,但我希望这对某人有帮助!
【讨论】:
【参考方案2】:如果需要,您可以将值作为字符串返回:
SELECT IF(u.id IS NULL, 'false', 'true') as status
FROM user u
LIMIT 10
【讨论】:
但这些是字符串,不是真/假 有没有办法将它们返回为true
& false
而无需将它们转换为字符串?
返回字符串将需要来自接收方的更多处理程序【参考方案3】:
MySQL 没有布尔数据类型,因此您需要在 MySQL 端坚持使用 0 和 1:
select if(u.id is null, 0, 1) status_int
from user u
limit 10
如果你更喜欢 php 中的布尔值而不是 0/1,你可以像这样转换它:
$status = (bool) $status_int;
【讨论】:
【参考方案4】:TRUE/FALSE 相当于 1/0。这只是你的前端如何显示它的问题。
如果您需要返回字符串“true”和“false”(我不建议这样做 - 在显示中处理),那么您也必须考虑到这一点:
IF(IF(u.id ISNULL,false,true) = 1, 'TRUE', 'FALSE')
【讨论】:
有没有办法将它们返回为true
& false
而无需将它们转换为字符串?
正如我所说,1/0 是真/假,所以您的原始语句已经将它们返回为真/假。这只是你想在前端做什么的问题。我会尝试将其保留为 true/false 并且 not 将其转换为字符串。让您的前端或其他代码处理它对 1/0(真/假)的作用。【参考方案5】:
IF()
您缺少单引号。
select if(u.id is null,'false','true') status
from user u
limit 10;
【讨论】:
以上是关于MySQL:返回“0”和“1”而不是“假”和“真”的主要内容,如果未能解决你的问题,请参考以下文章