【问题标题】:sql remove rows contain 'test' but keep rows contain 'contest'sql 删除包含 \'test\' 的行但保留包含 \'contest\' 的行
【发布时间】:2022-12-07 06:57:20
【问题描述】:

我想删除所有活动名称中包含“测试”一词的活动,但保留名称中包含“竞赛”的活动。如何在 Snowflake 环境中的 sql 中实现此目的?由于大写/小写可以完全随机,我正在考虑使用 NAME (ilike any('%_test_%', '%_test%', 'test_%', 'test')) 但是当我这样做时,'contest' 也被删除,这不是我想要的结果。

样本数据:

|                    Name                      |
|AuroraEnterprisesInc_AuroraSepTestCampaign    |
|_TEST                                         |
|test                                          |
|001_test_XP_GutterDoctor_June-OctoberCampaign|
|FR_TEST_                                      |
|002_XP_HunterKnifton_21ElectionContestCampaign|
|001_XP_Kijiji_BuyandSell                      |

结果应该是

|                    Name                      |
|002_XP_HunterKnifton_21ElectionContestCampaign|
|001_XP_Kijiji_BuyandSell                      |

【问题讨论】:

    标签: sql snowflake-cloud-data-platform sql-like


    【解决方案1】:

    删除所有活动名称中包含“测试”一词的活动,但保留名称中包含“竞赛”的活动

    您可以用两个条件来表达这一点。根据您现有的逻辑检查列中是否存在单词:

    NAME (ilike any('%_test_%', '%_test%', 'test_%', 'test'))
    AND NOT NAME (ilike any('%_contest_%', '%_contest%', 'contest_%', 'contest'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多