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您也有一個區分大小寫的問題。 –