【问题标题】:SSIS expression substring and if else condition to separate data into two columns [duplicate]SSIS表达式子字符串和if else条件将数据分成两列[重复]
【发布时间】:2022-01-13 20:39:34
【问题描述】:

源表

            +----------------+
            | Identification |
            +----------------+
            | AB1234567      |
            | A234B5678      |
            +----------------+

预期结果

            +-----------+-----------+
            |    ID1    |    ID2    |
            +-----------+-----------+
            | AB1234567 |           |
            |           | A234B5678 |
            +-----------+-----------+

逻辑:ID1 开头有两个字母,后跟 7 个数字。 ID2 是字母和数字的组合,没有特定的顺序

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: sql ssis derived-column


【解决方案1】:

这将更容易通过查询来完成。如果源是 SQL Server,则直接查询它。如果源不是 SQL Server,则将数据加载到临时表并进行查询。下面的查询示例为您提供了所需的输出。

CREATE TABLE #MyTable
(
    Identification VARCHAR(50)
);

INSERT INTO #MyTable VALUES ('AB1234567'), ('A234B5678');

SELECT
    CASE
        WHEN Identification LIKE '[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
            THEN Identification
        ELSE NULL
        END AS ID1
    , CASE
        WHEN Identification LIKE '[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
            THEN NULL
        ELSE Identification
        END AS ID2
FROM
    #MyTable AS MT;

DROP TABLE IF EXISTS #MyTable;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多