2017-09-14 37 views
0

INT我查詢這樣的:在列active演員布爾在SQLite的

SELECT 
active, cast(active as int) 
FROM samples 

表樣品有兩行,truefalse,只是爲了測試。其結果是:

TRUE 0 
FALSE 0 

雖然true我希望期望值是1。我不明白爲什麼演員不工作。

回答

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

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 

回答更新他的回答採取active列的情況下爲每評論帳戶由@vasek 。

+0

忘了提,我也試過了語法,和它也不起作用。結果仍然是一樣的。另外,active是boolean類型的。 – donnadulcinea

+1

在SQLite中沒有實際的布爾型數據類型,在內部它只是使用0或1值的整數進行存儲。如果我的'CASE'表達式不起作用,那麼你的數據不是你所描述的。也許你有空白或填充。 –

+0

@donnadulcinea您也有一個區分大小寫的問題。 –