在SQL Server 2008中检查多个列是否为null

在SQL Server 2008中检查多个列是否为null,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,表A: Id Name DateCreated DateModified ----------------------------------- 1 A 2013-1-12 2013-1-15 2 B NULL 2013-2-1 3 C NULL NULL 我必须将此表的数据迁移到另一个表中,DateCreated是不可为空的列,条件是如果DateCreated为空,则使用DateModified,如果两者

表A:

Id  Name  DateCreated  DateModified
-----------------------------------
1    A     2013-1-12    2013-1-15
2    B     NULL         2013-2-1
3    C     NULL          NULL
我必须将此表的数据迁移到另一个表中,
DateCreated
是不可为空的列,条件是如果
DateCreated
为空,则使用
DateModified
,如果两者都为空,则使用当前日期

我不能用

ISNull(DateCreated,DateModified)
因为两者都可以为null


我该怎么做?该表大约有10000行。

您可以使用
COALESCE(DateCreated,DateModified,GETDATE())
嵌套
Isnull

Isnull(DateCreated,isnull(DateModified, getdate()))
或者使用
案例

case when DateCreated is null and DateModified is null then getdate()
     when DateCreated is null then DateModified 
     else DateCreated end

你要找的东西是这样的吗

$result = mysql_query($query, $link);

if ($result) {
  while($row = mysql_fetch_array($result)) {

    if ($row['DateCreated'] == 'NULL'){

        if ($row['DateModified'] == 'NULL'){

                $today = date("Y-m-d");
                $id = $row['id'];
                $query = sprintf("SET DateCreated = $today WHERE id = $id");

            } else {
                $newDate = $row['DateModified'];
                $id = $row['id'];
                $query = sprintf("SET DateCreated = $newDate WHERE id = $id");}
        }
  }

}
else {
  echo mysql_error();
}

coalesce完成了所有这些工作:colesce有一些优先级问题,这是我所知道的,但在本例中,由于数据类型相同,两者都可以工作。将此标记为正确答案,因为它是先回答的。事实上,这两种观点都是正确的,因此我们对这两种观点都投了赞成票。