INT我查询这样的:在列active
演员布尔在SQLite的
SELECT
active, cast(active as int)
FROM samples
表样品有两行,true
和false
,只是为了测试。其结果是:
TRUE 0
FALSE 0
虽然true
我希望期望值是1
。我不明白为什么演员不工作。
INT我查询这样的:在列active
演员布尔在SQLite的
SELECT
active, cast(active as int)
FROM samples
表样品有两行,true
和false
,只是为了测试。其结果是:
TRUE 0
FALSE 0
虽然true
我希望期望值是1
。我不明白为什么演员不工作。
蒂姆的答案是绝对正确的,但是你的数据,你需要转换字符大小写:
SELECT
active,
CASE WHEN LOWER(active) = 'true' THEN 1 ELSE 0 END AS active_bool
FROM samples
它给你这样的:
TRUE 1
false 0
True 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
回答更新他的回答采取active
列的情况下为每评论帐户由@vasek 。
忘了提,我也试过了语法,和它也不起作用。结果仍然是一样的。另外,active是boolean类型的。 – donnadulcinea
在SQLite中没有实际的布尔型数据类型,在内部它只是使用0或1值的整数进行存储。如果我的'CASE'表达式不起作用,那么你的数据不是你所描述的。也许你有空白或填充。 –
@donnadulcinea您也有一个区分大小写的问题。 –