如何在SSIS中实现TRY_CONVERT功能?

Jay*_*sai 5 t-sql sql-server expression ssis derived-column

在 SSIS 包中,我有派生列,我想在其中格式化手机,如下所示:

CASE
    WHEN TRY_CONVERT(BIGINT, phone) IS NULL THEN
        NULL
    ELSE
        phone
END
Run Code Online (Sandbox Code Playgroud)

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

Had*_*adi 5

派生列

您必须使用以下表达式:

(DT_I8)[Phone] == (DT_I8)[Phone] ? [Phone] : NULL(DT_WSTR,50)
Run Code Online (Sandbox Code Playgroud)

请注意,您必须替换(DT_WSTR,50)为 column 的数据类型[Phone] 点击这里查看更多信息

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

在此输入图像描述

脚本组件

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

  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;
    
    }
    
    Run Code Online (Sandbox Code Playgroud)