2017-08-28 56 views
0

當日期爲NULL時,我想顯示'N/A',但如果日期不爲空,我想以dB爲單位顯示日期。這是我現在有的,我在THEN/ELSE表達式中遇到了一個DataType不匹配。我假設這是因爲我試圖在日期字段中顯示一個字符。CASE WHEN數據類型不匹配

SELECT 
CASE WHEN created_at IS NULL 
    THEN 'N/A' 
    ELSE created_at 
END AS created_at 
FROM example.example_id 

這可能嗎?

+1

你問,不可以。列不能有多個數據類型。您可以將'created_At'強制轉換爲varchar(或文本數據類型),它可以工作,但不會改變類型,這是不可能的。 – xQbert

回答

0

您的假設是正確的:您不能將日期(時間)數據類型與varchar數據類型混合使用。解決的辦法是將日期轉換爲VARCHAR:

SELECT CASE WHEN created_at IS NULL THEN 'N/A' 
      ELSE CAST (created_at as char(8) format 'YYYYMMDD') 
     END AS created_at 
FROM example.example_id 

此地轉換可能需要一些調整,這取決於你想要的顯示。

+0

如果Teradata沒有轉換功能,它可能需要更多的調整。 –

+0

@DanBracuk,錯過了Teradata標籤。編輯。 – HoneyBadger

0

簡單的,你可以嘗試

SELECT CAST(VARCHAR, ISNULL(Created_at, 'N/A')) As 'Created_at' 
FROM example.example_id 
1

不能混淆的數據類型。

SELECT COALESCE(CAST(created_at AS VARCHAR(100)),'NA') AS created_at 
    FROM example.example_id 

或者,如果您只關心演示文稿,您可以調整您的用戶首選項。恩。 SQL助手 - >選項 - >數據格式 - >然後將'顯示此字符串的空數據值'設置爲'不適用'。

0

相反CASE,你可以使用COALESCE,太多,但你仍然需要將日期轉換爲字符串第一:「這是可能的」

Coalesce(To_Char(created_at, 'yyyy-mm-dd'), 'N/A')