在SQLite中将Boolean转换为Int

时间:2017-09-14 04:46:22

标签: sql sqlite casting

我在问这个:

SELECT 
active, cast(active as int)
FROM samples

active列中的表格样本有两行,truefalse,只是为了测试。结果是:

TRUE    0
FALSE   0

true的预期值我希望是1。我不明白演员为什么不工作。

2 个答案:

答案 0 :(得分:2)

蒂姆的答案绝对正确,但是对于你的数据,你需要转换字符大小写:

SELECT 
    active,
    CASE WHEN LOWER(active) = 'true' THEN 1 ELSE 0 END AS active_bool
FROM samples

这给了你:

TRUE    1
false   0
True    1

答案 1 :(得分:1)

SQLite中没有布尔类型。最接近的可能就是使用整数列并将0存储为false,将1存储为true。但是,您可以使用CASE表达式将字符串truefalse分别显式映射为1和0:

SELECT 
    active,
    CASE WHEN LOWER(active) = 'true' THEN 1 ELSE 0 END AS active_bool
FROM samples

根据@vasek在他的回答中的评论,更新了答案以考虑active列的情况。