簡體   English   中英

SQL中的用例語句

[英]Use case statement in SQL

我想使用case語句更改結果中的值,但似乎忽略了這一點。 很簡單,如果表中的值為1則必須更改為True ,如果值為0則必須更改為false 這是我做的:

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。

請幫忙。

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

這里這里更多參考

從類型的角度來看,代碼說的那一刻

CASE BIT
   WHEN 1 then NVARCHAR
   ELSE BIT

那是行不通的。

所以你必須做這樣的事情

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

如果bShownUp是數字列,則表示混合結果 - 有時為0/1,有時為'False'/'True',例如字符串。 我想bShownUp是VARCHAR類型,你必須將WHEN 0改為bShownUp WHEN '0'

如果你的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

要么

嘗試類似下面的內容,

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

我想這會做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM