sql - 使用 case 语句更新语句 SQL

标签 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

最佳答案

您不需要使用 case 表达式,而是使用 where 子句:

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

关于sql - 使用 case 语句更新语句 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53204414/

相关文章:

sql-server - SQL Powershell错误: Invoke-Sqlcmd : The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdlet

sql - 在 Where 子句中使用表

asp.net - 在数据库表中存储字节数组的最节省空间的方法 - ASP.NET

php - 如何让 jquery 自动完成仅显示以键入的查询开头的术语

php - 如何解决分号附近多语句 mysql 查询的语法错误

sql-server - 为什么 Entity Framework 将参数作为 DECIMAL(5,0) 传递给使用 NUMERIC(19) 定义的列?

mysql - 获取每次访问的平均时间

sql-server - SSIS 表达式生成器 - GetDate() 到字符串 (dd-MMM-yy)

.net - SQL Server 和 TransactionScope(带 MSDTC): Sporadically can't get connection

sql-server - 如何获得最高薪员工行