在SQL Server 2008中检查多个列是否为null
表A:在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,如果两者
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有一些优先级问题,这是我所知道的,但在本例中,由于数据类型相同,两者都可以工作。将此标记为正确答案,因为它是先回答的。事实上,这两种观点都是正确的,因此我们对这两种观点都投了赞成票。