代码之家  ›  专栏  ›  技术社区  ›  ASH

从3列更新一列的最有效方法

  •  2
  • ASH  · 技术社区  · 7 年前

    这是从三个不同的列中更新一个列的最有效方法吗?

    UPDATE TBL_FR2052A_TPOS_HIST_SPLIT
    SET REPORTABLE_AMOUNT = ISNULL(PRINCIPAL,0)
    
    UPDATE TBL_FR2052A_TPOS_HIST_SPLIT
    SET REPORTABLE_AMOUNT = ISNULL(INTEREST,0)
    
    UPDATE TBL_FR2052A_TPOS_HIST_SPLIT
    SET REPORTABLE_AMOUNT = ISNULL(RAW_DATA_AMOUNT,0)
    

    我正在使用SQL Server。谢谢

    2 回复  |  直到 7 年前
        1
  •  5
  •   zambonee    7 年前

    看起来像 COALESCE() 会有帮助的

    UPDATE TBL_FR2052A_TPOS_HIST_SPLIT
    SET REPORTABLE_AMOUNT = COALESCE(ROW_DATA_AMOUNT, INTEREST, PRINCIPAL, 0)
    

    REPORTABLE_AMOUNT 然后将使用 COALESCE() 这不是null。

        2
  •  1
  •   Abdul Azeez    7 年前

    如果要为更新字段检查Null,请尝试使用SQL:Case-When-End。

    Egs:

        UPDATE TBL_FR2052A_TPOS_HIST_SPLIT
        SET REPORTABLE_AMOUNT =
        case when ISNULL(PRINCIPAL,0) <> 0 then PRINCIPAL
        case when ISNULL(INTEREST,0) <> 0 then INTEREST
        case when ISNULL(RAW_DATA_AMOUNT,0) <> then RAW_DATA_AMOUNT
        else 0  --default value
        End
    

    当做

    阿卜杜勒