在SQL Server中重命名列中的类别

在SQL Server中重命名列中的类别,sql,sql-server,ssms,Sql,Sql Server,Ssms,这是一个问题 select col1 from table col1包含以下类别值: A B C NULL 如何将null类别重命名为D?尝试以下操作:ISNULL()函数用于将null值替换为另一个值 select isnull(col1,'D') as col1 from table SQLServer使用 对于您的代码: select ISNULL(col1, 'D') AS col_name from table 然而,这将在本专栏中全面发生。不能使用此方法来生成序列,如D然后E

这是一个问题

select col1
from table
col1
包含以下类别值:

A
B
C
NULL
如何将
null
类别重命名为
D

尝试以下操作:ISNULL()函数用于将null值替换为另一个值

select isnull(col1,'D') as col1
from table
SQLServer使用

对于您的代码:

select ISNULL(col1, 'D') AS col_name
from table

然而,这将在本专栏中全面发生。不能使用此方法来生成序列,如D然后E然后F。此列中遇到的任何空值都将更改为D。

如果要使更改永久

UPDATE table
SET col1 = 'D'
WHERE col1 IS NULL
从那时起,您可以简单地查询

SELECT col1
FROM table
。。。以获得期望的结果


如果在
col1
中有多行具有
NULL
,则需要按唯一键进行筛选,最好是按主键(顺便说一下,每个表都应该有主键)。假设你有一张像这样的桌子

id (PK)   col1
---       ----
1         'A'
2         'B'
3         'C'
4         NULL
5         NULL
然后你就可以用它来修理了

UPDATE table SET col1 = 'D' WHERE id = 4;
UPDATE table SET col1 = 'E' WHERE id = 5;
除非您可以从另一列计算新值,例如:

UPDATE table 
SET col1 = UPPER(LEFT(name, 1))

ANSI SQL解决方案是
coalesce(col1,'D')
,适用于SQL Server和基本上任何其他dbms!如果col1中有2个空值,可能会发生什么?没有,但我有数百个空值,谢谢。很好的解决方案。
UPDATE table 
SET col1 = UPPER(LEFT(name, 1))