2015-12-09 35 views
2

我想用case語句更改結果中的值,但似乎忽略了這一點。非常簡單,如果表中的值是1那麼必須更改爲True,如果值爲0,則必須更改爲false。下面是我做的:SQL中的用例語句

CASE pbc.bShownUp 
    WHEN 0 THEN 'False' 
    ELSE pbc.bShownUp 
END 
AND 
CASE ch.bShownUp 
    WHEN 1 THEN 'True' 
    ELSE ch.bShownUp 
END 

不管我做什麼,結果仍然是0或1

請幫助。

+0

您正在使用哪個數據庫管理系統?你的意思是'結果仍然是0或1' - 你的意思是它顯示0和1而不是真和假? – pedram

+0

請給更多的上下文:什麼數據庫?這個CASE位於哪裏?在SELECT子句中? – marmarta

+0

什麼是您的DBMS?是MS SQL Server還是其他?什麼是'pbc.bShownUp'的數據類型? –

回答

5

當您使用CASE表達式時,數據的返回類型必須與所有WHEN部分相同或更簡單,CASE必須解析爲單一類型。

更多參考herehere

從一個類型來看,此刻的你的代碼說

CASE BIT 
    WHEN 1 then NVARCHAR 
    ELSE BIT 

這是行不通的。

所以,你必須做這樣的事情

CASE ch.bShownUp 
    WHEN 1 then 'TRUE' 
    ELSE 'FALSE' 
+0

案例表達。 (Case語句沒有任何結果值。) – jarlh

+0

@jarlh - 好點,更新:) –

2

如果bShownUp是數字列,則會生成混合結果 - 有時爲0/1,有時爲「False」/「True」,例如串。我想bShownUp是VARCHAR類型,你必須將WHEN 0更改爲WHEN '0'

2

如果您bShownUp是VARCHAR然後將查詢應該看起來像

CASE pbc.bShownUp 
    WHEN '0' THEN 'False' 
    ELSE pbc.bShownUp 
END 

AND 

CASE ch.bShownUp 
    WHEN '1' THEN 'True' 
    ELSE ch.bShownUp 
END 

OR

嘗試像下面,

CASE pbc.bShownUp 
     WHEN 0 THEN 'False' 
     ELSE CAST(pbc.bShownUp AS VARCHAR(10)) 
    END 

    AND 

    CASE ch.bShownUp 
     WHEN 1 THEN 'True' 
     ELSE CAST(ch.bShownUp AS VARCHAR(10)) 
    END 
+0

bShownUp的數據類型是位。 –

-1

我認爲這會做:

case ch.bShownUp 
    when 1 then 'True' 
    else 'False' 
end