具有默认值的SQL Select语句



我想要一个SQL语句来选择"UserA"的所有值,但如果该值为空,则应使用"Default"列中的值。

我有一个数据库表,它定义了许多"变量",每个变量都包含每个用户的值或默认值。

VarName    Default    UserA    UserB    UserC
LeftEdge        0        10      50       60
TopEdge         5       100     100      
Colour        Red              Cyan     Green

我不想为单元格设置默认值,因为行的默认值可能会不时更改,并且需要更改所有空单元格,而不仅仅是具有旧默认值的单元格。

我尝试过使用JOIN,但我不知道如果单元格为空,如何让它选择默认值。

有人知道我是否可以使用一个简单的SQL语句,或者有一种更好的方法来构建数据以实现我想要的目标吗?

COALESCE适用于您,如果它是NULL。下面的解决方案可以处理NULL和空字符串值。

SELECT 
CASE WHEN UserA = '' THEN Default 
WHEN UserA IS NULL THEN Default
ELSE UserA 
END AS UserA
FROM TableName

不用说,设计非常糟糕。

您可以使用:

select varname, coalesce(userA, default) as value
from t

如果您真的要将用户映射到默认值,那么这是一个糟糕的设计。添加新用户需要添加一个新列——这通常是个坏主意。

最新更新