使用case语句更新语句SQL

时间:2018-11-08 09:02:26

标签: sql sql-server

如何更新以下条件的值

CREATE TABLE T 
  ( 
     C VARCHAR(10) 
  ); 

INSERT INTO T 
VALUES      ('0000'), 
            ('123456789'),
            ('A'), 
            (''),
            ('    '), 
            (NULL); 

我需要保留NULL值或具有0000的值,并将其余值更新为1234。

预期输出如下:

0000
1234
1234
1234
1234
NULL

我尝试使用以下语句,但是有更好的方法吗?

UPDATE T SET C=CASE WHEN C IS NULL then null
when C='0000' then '0000' else '1234' END

3 个答案:

答案 0 :(得分:2)

只使用where子句,您可以尝试如下

update T
set C='1234'
where C<>'0000'

答案 1 :(得分:2)

您无需使用case表达式,而使用where子句:

UPDATE t
     SET C = '1234'
WHERE C IS NOT NULL OR C <> '0000';

答案 2 :(得分:1)

简单

UPDATE T SET C='1234' where c <> '0000'

将起作用,因为空比较不是 true

SQL>UPDATE T SET C='1234' where c <> '0000';

                  4 rows updated

SQL>select * from t;
C
==========
0000
1234
1234
1234
1234
-

                  6 rows found