Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否用同一列中的匹配值替换空日期值?_Sql_Sql Server - Fatal编程技术网

Sql 是否用同一列中的匹配值替换空日期值?

Sql 是否用同一列中的匹配值替换空日期值?,sql,sql-server,Sql,Sql Server,我有一个小查询,如下所示: SELECT CS.ID, CS.Import_Date, CS.Secondary_Date FROM Center_Summary CS ORDER BY CS.Import_Date 返回如下值: SELECT CS.ID, CS.Import_Date, CS.Secondary_Date FROM Center_Summary CS ORDER BY CS.Import_Date 我想用05/01/2019的值替换这些作为01/01/1900拉取的“空

我有一个小查询,如下所示:

SELECT
CS.ID,
CS.Import_Date,
CS.Secondary_Date
FROM
Center_Summary CS
ORDER BY CS.Import_Date
返回如下值:

SELECT
CS.ID,
CS.Import_Date,
CS.Secondary_Date
FROM
Center_Summary CS
ORDER BY CS.Import_Date

我想用
05/01/2019
的值替换这些作为
01/01/1900
拉取的“空”值。在这种情况下,这是因为
ID
Import\u Date
匹配,所以
Secondary\u Date
也应该匹配。我曾想过使用
REPLACE()
REPLACE(CS.Secondary\u Date,'01/01/1900',?
),但我不确定如何编写逻辑,根据
ID
Import\u Date
,从列
Secondary\u Date
中提取匹配值-我应该在这里使用什么函数

它当前的运行方式(我要替换的红色日期):

我的预期结果是:


为什么不将
更新
WHERE
一起使用呢

UPDATE dbo.YourTable
SET SecondaryDate = ImportDate
WHERE SecondaryDate = '19000101';
“空”值最好用
NULL
表示。我建议将它们转换为
NULL

nullif(secondary_date, '1900-01-01')
如果确实需要另一个值,则可以使用
coalesce()
case
表达式:

coalesce(nullif(secondary_date, '1900-01-01'), '2019-05-01')

然而,我通常不喜欢代码中的这些神奇值。

日期
01/01/1900
不是一个“空”值。在我看来,唯一接近于表示空的值是SQL Server中的零长度字符串,或者说“空”。也有人说
NULL
意味着空,但我倾向于这样看“未知”(即
NULL
的真正定义).Gotcha-那么它确实是一个空值。实际上,我需要将SecondaryDate设置为SecondaryDate列中的另一个值,其中ID和Import_date与另一行匹配-这有意义吗?我认为我们需要更多的示例,@dwirony,而不是图像。没有图片,我不知道如何解释,我的SQL知识太差,无法进行对话e流利-我在上面添加了我的预期结果图片。我不熟悉最佳实践-你认为尝试将这些空值更改为其他值太多了吗?@dwirony…建议将
'1900-01-01'
日期存储为
null
——如果意思是日期不适用。有在某些情况下,此类日期是合适的。但是,例如,如果是首次购买日期,并且没有购买,则
NULL
是合适的。我认为我没有充分解释我的问题-请查看我在上面添加的前/后图片,以显示我的预期结果。