我试图在表中设置一个列,如果DB中的列的日期值为NULL,则该列将声明“no”。如果列有日期值,那么我想要显示它。此SQL全部位于SPROC中,然后将这些值传递给应用程序。
DB值的类型为DATETYPE,NULL。

以下是我迄今所尝试过的
,CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'no date set' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry]结果:

,合并(强制转换(空作为日期时间),“无日期集”),TB_EVNTEXP.StartDate作为到期。
结果会产生转换错误。
这是可行的,但在我的表中所有的空值都是空的。
,[TB_EVNTEXP].StartDate] AS [cardexpiry]现在花了很多时间在这个问题上,可以用一只有用的手来完成:)
干杯保罗
发布于 2015-06-01 16:24:55
您似乎在使用SQL Server,它不允许将字符串与日期格式混合使用。
试试这个:
SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN '' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry]
FROM 或者,您需要将日期转换为varchar,以便将其与空值混合:
SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'not set' ELSE CONVERT(VARCHAR, [TB_EVNTEXP].[StartDate]) END AS [expiry]
FROM 发布于 2015-06-01 16:24:58
这就是您的错误发生的地方:
COALESCE(CAST(NULL AS DATETIME), 'no date set'), 这在逻辑上是一样的,并且运行。
COALESCE(NULL, 'no date set'), 或者更好,
'no date set'https://stackoverflow.com/questions/30578085
复制相似问题