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