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