SQL 中的用例语句

Use case statement in SQL

我想使用 case 语句更改结果中的值,但它似乎忽略了这一点。很简单,如果table中的值为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。

请帮忙。

如果 bShownUp 是数字列,您将生成混合结果 - 有时是 0/1,有时是 'False'/'True' 例如细绳。我想 bShownUp 是 VARCHAR 类型,您必须将 WHEN 0 更改为 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

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

更多参考here and here

从类型的角度来看,目前您的代码显示

CASE BIT
   WHEN 1 then NVARCHAR
   ELSE BIT

那是行不通的。

所以你必须做这样的事情

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