case when 后的 sybase 有线输出

sybase wired output after case when

在此之后 select 到一个 sybase DB

SELECT
CASE 
    WHEN 'a' = 'b' THEN CONVERT(datetime,getdate(),23)
    WHEN 'a' <> 'b' THEN ''
END

输出始终是日期(在 Squirrel 和 Aqua Data Studio 中尝试过)。

这始终为空

SELECT
CASE 
    WHEN 'a' = 'b' THEN CONVERT(datetime,getdate(),23)
END

如果某事不正确,我如何得到 '' 作为结果,如果某事是真的,我如何得到日期计算? 有人可以解释这种行为吗?

我认为您看到此行为是因为您的两个案例 returning 不同的数据类型。

    SELECT
CASE 
    WHEN 'a' = 'b' THEN CONVERT(datetime,getdate(),23)  <-- returns datetime
    WHEN 'a' <> 'b' THEN ''                             <-- returns string
END

A​​ select 需要 return 一致的数据类型。我猜您想 return 日期的字符串表示形式。如果是这种情况,那么您可以将查询更改为如下内容:

SELECT
CASE 
    WHEN 'a' = 'b' THEN CONVERT(varchar,getdate(),23)
    WHEN 'a' <> 'b' THEN ''
END

通过此查询,我看到了 when.

情况下的正确响应

希望这对您有所帮助:)