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.
情况下的正确响应
希望这对您有所帮助:)
在此之后 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.
情况下的正确响应希望这对您有所帮助:)