SQL Server 是否可以将SQL中的多个空列更新为NULL

9wbgstp7  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(171)
UPDATE TT 
SET DEATHDATE = NULL
FROM TEMP_TABLE TT 
WHERE LTRIM(RTRIM(DEATHDATE)) = ''

UPDATE TT 
SET CURRENTDATE= NULL
FROM TEMP_TABLE TT 
WHERE LTRIM(RTRIM(CURRENTDATE)) = ''

UPDATE TT 
SET BIRTHDATE = NULL
FROM TEMP_TABLE TT 
WHERE LTRIM(RTRIM(BIRTHDATE)) = ''

UPDATE TT 
SET BIRTHDATE = NULL
FROM TEMP_TABLE TT 
WHERE DATALENGTH(BIRTHDATE) = 0

如果指定的列记录为EMPTY,则此更新语句将更新为NULL
但是我不喜欢这样做。我想更改表中的所有记录。如果该表中有EMPTY条记录,我想将它们更改为NULL
这可能吗?先谢谢你

bvuwiixz

bvuwiixz1#

您可以将所有这些合并到单个更新中,使用CASE来决定是否覆盖该值。

UPDATE TT 
SET DEATHDATE   = CASE WHEN TRIM(DEATHDATE)   = '' THEN NULL ELSE DEATHDATE END,
    CURRENTDATE = CASE WHEN TRIM(CURRENTDATE) = '' THEN NULL ELSE CURRENTDATE END,
    BIRTHDATE   = CASE WHEN TRIM(BIRTHDATE)   = '' THEN NULL ELSE BIRTHDATE END
FROM TEMP_TABLE TT 
WHERE TRIM(DEATHDATE) = ''
  OR  TRIM(CURRENTDATE) = ''
  OR  TRIM(BIRTHDATE) = '';

你也可以将表达式缩短为CASE WHEN TRIM(DEATHDATE) <> '' THEN DEATHDATE END等,但我认为上面的表达式更清楚。
为什么要在文本列中存储日期是另一个问题。我只能说:别说了。

相关问题