Teradata

一次從 Sql 表中刪除所有 Null 值

  • September 20, 2018

我對 Teradata 和 SQL 環境非常陌生。我正在嘗試使用 ISNULL(COLUMNNAME,0) 從 teradata 中的 sql 表中刪除所有空值。但它給出了“數據類型與定義的數據類型名稱不匹配”的錯誤。另外,想知道是否有任何方法可以一次刪除所有 NULL,而不是按列一次又一次地編寫上述查詢。

ISNULLTeradata/Standard SQL 中沒有命名函式,而是呼叫它COALESCE

COALESCE(columnname, 0)

它必須單獨應用於每一列。

我不確定我是否完全理解您要做什麼。ISNULL(COLUMNNAME,0) 是一個函式,如果 COLUMNNAME 包含 null 則返回 0(它不會更改表中的任何內容,您必須進行更新才能修改表)。

您收到的錯誤消息很可能是因為 COLUMNNAME 是不同於數字的類型。如果 COLUMNNAME 是字元串類型,您可以使用:

ISNULL(COLUMNNAME, '')

如果它是日期類型,您需要一個日期:

ISNULL(COLUMNNAME, DATE('1900-01-01') ) -- I just invented one here, use one that makes sense in your context

等等。正如您所指出的,將函式應用於列會隱式重命名結果列。大多數 DBMS 會生成一個相當神秘的名稱,因此進行顯式重命名是有意義的,如下所示:

ISNULL(COLUMNNAME, '') AS COLUMNNAME

如果您想保留名稱。

引用自:https://dba.stackexchange.com/questions/218200