SQL根据一个字段的值在两个字段之间进行选择

时间:2010-05-26 11:20:54

标签: sql postgresql null

我正在使用PostgreSQL数据库,在表示一些测量的表中,我有两列:测量和插值。在第一个我观察(测量),在第二个内插值取决于附近的值。具有原始值的每个记录也具有内插值。但是,有许多记录没有“原始”观察(NULL),因此值被内插并存储在第二列中。所以基本上只有两个案例在数据库中:

Value  Value  
NULL   Value

当然,最好使用第一列中的值(如果可用),因此我需要构建一个查询来从第一列中选​​择数据,如果不可用(NULL),则数据库返回值从有关记录的第二列开始。我不知道如何构建SQL查询。

请帮忙。感谢。

2 个答案:

答案 0 :(得分:31)

您可以使用Coalesce

  

COALESCE函数返回其第一个非null的参数。仅当所有参数都为空时才返回Null。

Select Coalesce( first_value, second_value )
From your_table

如果不是first_value,则返回NULL,否则返回second_value

答案 1 :(得分:8)

彼得钉了它。但是为了完整起见(问题的标题比您的特定问题更通用),这里是 Postgresql (以及其他几个数据库)中可用的几个conditional expressions的文档。 :CASE, COALESCE, NULLIF, GREATEST, LEAST。第一个是最一般的。