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

Fil*_*lip 12 sql postgresql null

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

Value  Value  
NULL   Value
Run Code Online (Sandbox Code Playgroud)

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

请帮忙.谢谢.

Pet*_*ang 31

你可以使用Coalesce:

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

Select Coalesce( first_value, second_value )
From your_table
Run Code Online (Sandbox Code Playgroud)

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


leo*_*loy 8

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