如何在SSIS中实现TRY_CONVERT功能?

时间:2019-04-02 20:03:16

标签: sql-server tsql ssis expression derived-column

在SSIS程序包中,我派生了一个专栏,希望在其中格式化手机,如下所示:

CASE
    WHEN TRY_CONVERT(BIGINT, phone) IS NULL THEN
        NULL
    ELSE
        phone
END

如何使用SSIS表达式获得与上述相同的结果?

1 个答案:

答案 0 :(得分:1)

派生列

您必须使用以下表达式:

(DT_I8)[Phone] == (DT_I8)[Phone] ? [Phone] : NULL(DT_WSTR,50)

请注意,您必须将(DT_WSTR,50)替换为列[Phone]的数据类型。 Click here for more information

然后在派生列错误输出中,将on error选项更改为Ignore Failure

enter image description here

脚本组件

您也可以使用脚本组件来实现此目的:

  1. 将脚本组件添加到数据流任务
  2. 选择[电话]作为输入列
  3. 创建与[Phone]示例[outPhone]相同类型的新输出列
  4. 使用类似的代码

    if(!Row.Phone_IsNull && !String.IsNullOrEmpty(Row.Phone) && Int64.TryParse(Row.Phone, out long number)){
    
        Row.OutPhone = Row.Phone;
    
    }else{
    
        Row.OutPhone_IsNull = true;
    
    }