SSIS将包含字符的记录设置为空值

时间:2018-05-01 00:42:05

标签: sql-server visual-studio ssis etl

我是新使用SSIS的,我使用派生列来查找和删除数字中的字符(" DI"),但是有了这个,我注意到了一些记录在" DI"之后有一些额外的字符,我需要那些只有" DI",如何将包含那些额外字符的记录设置为空值(不会弄乱仅包含" DI")?

2 个答案:

答案 0 :(得分:0)

SSIS有几种方法可以做到这一点,但是一些简单的方法就是使用SQL。像这样的东西。我使用TRY_CAST到INT,但如果需要,您可以更改数据类型。第一个还更多地依赖于SQL Server版本。它是在SQL Server 2012中引入的。

SELECT
    TRY_CAST(REPLACE(t.ColumnName,'DI','') AS INT) AS ColumnName
FROM SchemaName.TableName AS t

或其他选项,如果您使用较旧的SQL ...

SELECT
    CASE
        WHEN ISNUMERIC(REPLACE(t.ColumnName,'DI','')) = 1
        THEN REPLACE(t.ColumnName,'DI','')
        ELSE NULL
    END AS ColumnName
FROM SchemaName.TableName AS t

在您的SOURCE到DESTINATION上,您将更改SOURCE以使用SQL脚本而不是直接表/视图。

答案 1 :(得分:0)

没关系,我想出了让它工作的方法,按长度分解过滤然后混合,所以谢谢你的帮助!