我在问这个:
SELECT
active, cast(active as int)
FROM samples
active
列中的表格样本有两行,true
和false
,只是为了测试。结果是:
TRUE 0
FALSE 0
true
的预期值我希望是1
。我不明白演员为什么不工作。
答案 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
表达式将字符串true
和false
分别显式映射为1和0:
SELECT
active,
CASE WHEN LOWER(active) = 'true' THEN 1 ELSE 0 END AS active_bool
FROM samples
根据@vasek在他的回答中的评论,更新了答案以考虑active
列的情况。