2013-04-13 24 views
13

的我想選擇一個日期(我的專欄是時間戳類型)。但是當列中有一個NULL日期時,我想返回一個空字符串。這個怎麼做?我寫了這個:選擇日期(時間戳)和PostgreSQL爲字符串(字符),謹防NULL值

SELECT 
    CASE WHEN to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') IS NULL THEN '' 
     ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post END 
    to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post, content 
FROM topic; 

但它表明我的一些錯誤,真的不知道爲什麼:

ERROR: syntax error at or near "as" 
LINE 1: ...ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_po... 
                  ^

回答

17

使用COALESCE()功能是最好的方法,因爲它簡單地在一個NULL的情況下的替代值交換。可讀性也大大提高。 :)

SELECT COALESCE(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') AS last_post, content FROM topic; 
2

你把你的AS的情況下內?

嘗試:

SELECT 
    CASE WHEN last_post IS NULL THEN '' 
    ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') END AS last_post, 
    content 
FROM topic; 

我沒有嘗試過的查詢,但。

+1

這可以簡化爲'情況下LAST_POST爲null,則'其他...' –

+0

@a_horse_with_no_name你是對的,謝謝!我只專注於移動'AS ...'後,並沒有想到簡化了查詢...我會解決這個問題,現在! – Jerry

+0

好了,現在你不按預期格式的日期。 –

3
select coalesce(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') as last_post, content 
from topic; 
相關問題