我有一个日期列,其中某些行具有NULL值。我想使用ISNULL或类似的东西用“ N / A”代替这些值,但是,当我尝试使用ISNULL时,由于两种不同的数据类型,我得到一个错误。如果尝试将Date列转换为VARCHAR以便能够使用ISNULL,则列显示日期的方式会失真。有什么办法可以解决这个问题?
ISNULL(DateSent, 'N/A')
答案 0 :(得分:3)
我推荐COALESCE()
,因为它是标准的。但是,您的问题是第一列是日期/时间,并且与字符串不兼容。
因此,您需要转换值。您可以使用默认格式:
COALESCE(CONVERT(VARCHAR(255), DateSent), 'N/A')
或者您可以添加一个转换参数:
COALESCE(CONVERT(VARCHAR(255), DateSent, 120), 'N/A')
或者您可以使用FORMAT()
获得更大的灵活性。
答案 1 :(得分:0)
您可以尝试
Select ISNULL(Cast(DateSent as Varchar(20)), 'N/A')
下面是一个示例:
declare @DateSent date = getdate()
Select ISNULL(Cast(@DateSent as Varchar(20)), 'N/A')
对于以下空值。
declare @DateSent1 date = NULL
Select ISNULL(Cast(@DateSent1 as Varchar(20)), 'N/A')