如何在SSIS中有条件分裂中使用类似条件

发布于 01-19 08:54 字数 446 浏览 3 评论 0原文

我正在使用条件拆分来从表中滤除数据。我有几个条件要检查。例如,在电子邮件列中,值不应包含〜字符并包含 @ sign。出生日期,年份不应大于当年,每月不应该大于31岁

SELECT *
FROM [table]
WHERE Email LIKE '%~%'
   OR NOT (Email LIKE "%@%")
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 1, 2) <= 12
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 4, 2) <= 31
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 7, 4) <= YEAR(GETDATE());

。但是不确定如何使用条件分配在SSIS中实现它。

I am using conditional split to filter out the data from table. I have couple of conditions to check for. For example, In Email column, value should not contain ~ character and contain @ sign. Date of birth column, year should not be greater than current year, month should not be greater that 12 and day should not be greater than 31.

SELECT *
FROM [table]
WHERE Email LIKE '%~%'
   OR NOT (Email LIKE "%@%")
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 1, 2) <= 12
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 4, 2) <= 31
   OR SUBSTRING(CONVERT(varchar, DOb, 23), 7, 4) <= YEAR(GETDATE());

I have above sql query for the same. But not sure how to implement it in SSIS using conditional split.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埖埖迣鎅2025-01-26 08:54:51

根据您的条件在源查询中添加其他列,然后在条件 split 中使用这些列。

    SELECT CASE 
            WHEN Email LIKE '%@%'
                OR Email LIKE '%~%'
                THEN 'bad data'
            ELSE 'good data'
            END AS emaildatatype
        ,*
    FROM [table]
WHERE Email LIKE '%~%'
        OR NOT (Email LIKE "%@%")
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 1, 2) <= 12
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 4, 2) <= 31
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 7, 4) <= YEAR(GETDATE());

Add additional columns in your source query depending on your conditions and then use those columns in conditional split .

    SELECT CASE 
            WHEN Email LIKE '%@%'
                OR Email LIKE '%~%'
                THEN 'bad data'
            ELSE 'good data'
            END AS emaildatatype
        ,*
    FROM [table]
WHERE Email LIKE '%~%'
        OR NOT (Email LIKE "%@%")
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 1, 2) <= 12
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 4, 2) <= 31
        OR SUBSTRING(CONVERT(VARCHAR, DOb, 23), 7, 4) <= YEAR(GETDATE());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文