SQL View,替换NULL值

时间:2011-10-12 14:45:53

标签: sql sql-server-2008

在SQL中,我有一个显示当前月份数据的DateField。一些日期是NULL,我想以某种方式用fn NOW()日期替换NULL Date。有人可以帮我指导我在查询中更新NULLS吗?我正在使用MS SQL 2008 R2。

SELECT     TOP (100) PERCENT dbo.[001_SubItem_Price].SubItem, { fn NOW() } AS Date, dbo.POTable.Date AS Datefield
FROM         dbo.[001_SubItem_Price] LEFT OUTER JOIN
                      dbo.POTable ON dbo.[001_SubItem_Price].SubItem = dbo.POTable.Item
WHERE     (MONTH(dbo.POTable.Date) = MONTH(GETDATE())) OR
                      (MONTH(dbo.POTable.Date) IS NULL)
GROUP BY dbo.[001_SubItem_Price].SubItem, dbo.POTable.Date
ORDER BY dbo.[001_SubItem_Price].SubItem

enter image description here

7 个答案:

答案 0 :(得分:4)

只需使用:

...COALESCE(Datefield, GETDATE()) as Datefield

答案 1 :(得分:3)

在SQL Server中,您将使用isNULL(Column, GetDate())

或如果您有多列,请使用COALESCE

COALESCE(column1, column2, GETDATE()) as columnName

这将返回参数列表中的第一个非空项目。

答案 2 :(得分:1)

您可以使用ISNULL或COALESCE,具体取决于您需要它的上下文。

两者之间有一些重要的区别,您可以在这里查看:

http://blogs.msdn.com/b/sqltips/archive/2008/06/26/differences-between-isnull-and-coalesce.aspx

答案 3 :(得分:0)

这可以解决您的问题。

http://msdn.microsoft.com/en-us/library/ms184325.aspx

而不是

SELECT dateField...

使用

SELECT ISNULL(dateField, GETDATE())...

答案 4 :(得分:0)

select IsNull(yourdate, getdate())

答案 5 :(得分:0)

您可以尝试

ISNULL(dbo.POTable.Date, CURRENT_TIMESTAMP) AS Datefield 

ISNULL(dbo.POTable.Date, GETDATE()) AS Datefield  

答案 6 :(得分:-3)

只需在Datefield为空的位置创建一个sql UPDATE SET并将值设置为getdate()