我想编写一个更新查询,以将SQL表中的多列更新为BLANKS
,无论它们的当前值为NULL
。
我写了一个类似下面的查询,但是它似乎没有正确更新所有适当的行,其中某些/所有这些列都具有NULL
。
Update A SET
A.Col1 = CASE WHEN A.COl1 is NULL THEN ' ' END,
A.Col2 = CASE WHEN A.COl2 is NULL THEN ' ' END,
A.Col3 = CASE WHEN A.COl3 is NULL THEN ' ' END,
A.Col4 = CASE WHEN A.COl4 is NULL THEN ' ' END
FROM Table1 A
上面的查询有什么问题吗?难道我们不能像上面那样使用CASE
吗?
答案 0 :(得分:3)
您可以简单地使用not key-compliant
或UILabel
示例
ISNULL
或者如果您仍然希望使用COALESCE
,请在UPDATE YourTableName
SET
ColumnName1 = ISNULL(ColumnName1,' '),
ColumnName2 = COALESCE(ColumnName2,' ')
WHERE <Condition>
中指定列名,因为否则,所有非空字段的数据都将设置为CASE
ELSE
答案 1 :(得分:2)
我会做这样的事情:
UPDATE A SET
A.Col1 = ISNULL(A.COl1, ' '),
A.Col2 = ISNULL(A.COl2, ' '),
A.Col3 = ISNULL(A.COl3, ' '),
A.Col4 = ISNULL(A.COl4, ' ')
FROM Table1 A
答案 2 :(得分:1)
您想要ELSE
表达式中的CASE
:
Update A
SET A.Col1 = CASE WHEN A.COl1 is NULL THEN ' ' ELSE A.Col1 END,
. . .
FROM Table1 A;
此外,您也可以使用NULL
子句过滤WHERE
值,以避免使用CASE
表达式:
Update A
SET A.Col1 = ' ',
. . .
FROM Table1 A
WHERE A.Col1 IS NULL AND . . . ;