Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL根据一个字段的值在两个字段之间进行选择_Sql_Postgresql_Null - Fatal编程技术网

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

SQL根据一个字段的值在两个字段之间进行选择,sql,postgresql,null,Sql,Postgresql,Null,我使用的是PostgreSQL数据库,在一个表示一些度量的表中,我有两列:度量和插值。第一种是观测(测量),第二种是插值,取决于附近的值。每个具有原始值的记录也有一个插值。但是,有很多记录没有“原始”观测值(NULL),因此这些值被插值并存储在第二列中。因此,数据库中基本上只有两种情况: Value Value NULL Value 当然,如果第一列中的值可用,则最好使用第一列中的值,因此我需要构建一个查询来选择第一列中的数据,如果不可用(NULL),则数据库将从第二列中返回相关记录

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

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

请帮忙。谢谢。

您可以使用:

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


如果它不是
NULL
,则返回
first\u值
,否则返回
second\u值。

Peter将其锁定。但为了完整性起见(您的问题的标题比您的特定问题更为笼统),以下是Postgresql(以及其他一些数据库)中提供的几种文档:
CASE、COALESCE、NULLIF、grest、LEAST
。第一个是最通用的。

如果第一个值为空,您想要第三个值怎么办?您的意思是像
合并(第一个值,第二个值,第三个值)
?如果第一个值和第二个值都为
NULL
,则返回
third\u值
。谢谢,但只有当第一个值为NULL时,我才需要第三个值。我想得到我想要的东西,我做了2个选择的联盟。第一个选择获取firstvalue为非null的所有记录第二个选择获取firstvalue为null的所有记录并将v.Name作为FirstName进行转换(varchar(10),h.ID,108)作为LastName,如果所有值都为null,它是否返回null?@otocan:是的,我用当前文档中明确描述该行为的引用更新了我的答案。
Select Coalesce( first_value, second_value )
From your_table