SQL中的用例语句

时间:2015-12-09 11:15:43

标签: sql sql-server case

我想使用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。

请帮忙。

4 个答案:

答案 0 :(得分:5)

当您使用CASE表达式时,数据的返回类型必须与所有WHEN部分相同或更简单地放置,CASE必须解析为单一类型。

更多参考herehere

从类型的角度来看,目前你的代码是

CASE BIT
   WHEN 1 then NVARCHAR
   ELSE BIT

这不会奏效。

所以你必须做这样的事情

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

答案 1 :(得分:2)

如果Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // Always show the chooser (if there are multiple options available) startActivityForResult(Intent.createChooser(i, "Select Picture"), PICK_IMAGE_REQUEST);是数字列,则会产生混合结果 - 有时为0/1,有时为' False' /' True'例如串。我认为bShownUp的类型为VARCHAR,您必须将bShownUp更改为WHEN 0

答案 2 :(得分:2)

如果您的bShownUp为$query = 'SELECT distinct a.indent_req_id,b.id,b.approval_status,b.date,c.department from tra_dt a join tra_head b on b.id = a.indent_req_id join mas_dep c on b.req_dpt_id = c.dept_id where b.approval_status = "a" and cast(("exp_date")as date) >= " cast('.$now. 'as date)"'; ,那么您的查询应该是

VARCHAR

OR

尝试以下内容,

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

AND

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

答案 3 :(得分:-1)

我认为这样做:

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