2010-05-26 113 views
10

我正在使用PostgreSQL數據庫,並且在代表某些度量的表中,我有兩列:測量值和插值值。在第一次我觀察(測量),第二次插值取決於附近的值。每個具有原始值的記錄都有一個插值。但是,有很多沒有「原始」觀察(NULL)的記錄,因此這些值被內插並存儲在第二列中。所以基本上只有兩個病例在數據庫:SQL根據一個字段的值在兩個字段之間進行選擇

Value Value 
NULL Value 

當然,最好是從第一列中使用的值,如果可用,因此我需要建立一個查詢,以便從第一列選擇數據,如果不可用(NULL),則數據庫返回有問題記錄的第二列中的值。我不知道如何構建SQL查詢。

請幫忙。謝謝。

回答

27

您可以使用Coalesce

COALESCE函數返回第一個它的參數是不爲空。僅當所有參數都爲空時才返回空值。

Select Coalesce(first_value, second_value) 
From your_table 

這將返回first_value如果不是NULLsecond_value否則。

+0

如果你想要第三個值如果第一個值爲空怎麼辦? – Joe 2016-11-18 15:31:20

+1

你的意思是像'COALESCE(first_value,second_value,third_value)'?如果第一個和第二個值都是NULL,這將返回'third_value'。 – 2016-11-18 15:32:43

+0

謝謝,但我想第三個值只有當第一個值爲空。我想出了我想要的,我做了2次選擇的聯合。首先select獲取firstvalue爲非null的所有記錄,第二個select的where第一個值爲null,並將此v.Name作爲FirstName,CONVERT(varchar(10),h.ID,108)作爲LastName, – Joe 2016-11-19 11:58:06

8

彼得釘了它。但爲了完整起見(您的問題的標題比您的特定問題更籠統),下面列出Postgresql(以及其他幾個數據庫)中可用的幾個conditional expressions的文檔:CASE, COALESCE, NULLIF, GREATEST, LEAST。第一個是最一般的。

相關問題