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

时间:2013-02-25 12:58:07

标签: 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并且如果两者都为null使用当前日期。

我无法使用

ISNull(DateCreated,DateModified)

因为两者都可以为空。

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

嵌套Isnull

Isnull(DateCreated,isnull(DateModified, getdate()))

或使用CASE

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

答案 2 :(得分:-2)

你正在寻找这样的东西吗?

$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();
}