我有一个日期列,其中一些行的值为NULL。我想使用ISNULL或类似方法将这些值替换为“N/A”,但是当我尝试使用ISNULL时,由于两种不同的数据类型,我收到了错误提示。如果我尝试将我的日期列转换为VARCHAR以便能够使用ISNULL,那么我的日期列显示方式会变得失真。是否有任何方法可以解决这个问题?
ISNULL(DateSent, 'N/A')
我有一个日期列,其中一些行的值为NULL。我想使用ISNULL或类似方法将这些值替换为“N/A”,但是当我尝试使用ISNULL时,由于两种不同的数据类型,我收到了错误提示。如果我尝试将我的日期列转换为VARCHAR以便能够使用ISNULL,那么我的日期列显示方式会变得失真。是否有任何方法可以解决这个问题?
ISNULL(DateSent, 'N/A')
我建议使用COALESCE()
函数,因为它是标准的。然而,你的问题在于第一列是日期/时间类型的,这与字符串不兼容。
所以,你需要转换该值。你可以使用默认的格式:
COALESCE(CONVERT(VARCHAR(255), DateSent), 'N/A')
或者您可以添加一个转换参数:
COALESCE(CONVERT(VARCHAR(255), DateSent, 120), 'N/A')
或者你可以使用FORMAT()
函数获得更高的灵活性。
你可以尝试这个方法
Select ISNULL(Cast(DateSent as Varchar(20)), 'N/A')
以下是一个例子:
最初的回答declare @DateSent date = getdate()
Select ISNULL(Cast(@DateSent as Varchar(20)), 'N/A')
For null values as below.
declare @DateSent1 date = NULL
Select ISNULL(Cast(@DateSent1 as Varchar(20)), 'N/A')