【问题标题】:How to add new column depending on other one in SQL with regular expression如何使用正则表达式在 SQL 中根据其他列添加新列
【发布时间】:2021-11-19 16:44:59
【问题描述】:

使用此查询:

    SELECT  value,
            type
    FROM "my_data"

我得到一张桌子:

value   type
17      harm_2
10      harm
17      harm
11      sharm_9
76      coins

我想添加新列 is_harm,其值为harm/not_harm,具体取决于列类型,如果该列中有单词harm,则它必须是“harm”,如果不是“not_harm”。所以这个表应该是这样的:

value   type        is_harm      
17      harm_2      harm
10      harm        harm
17      harm        harm
11      sharm_9     not_harm
76      coins       not_harm

如何用正则表达式做到这一点?如您所见,有 sarm_9 之类的值

【问题讨论】:

    标签: mysql sql presto


    【解决方案1】:

    您可以使用^ 元字符,它匹配字符串的开头:

    SELECT value, type, 
      IF(type REGEXP '^harm', 'harm', 'not_harm') AS is_harm
    FROM "my_data";
    

    【讨论】:

      【解决方案2】:

      如果你想要所有的开头词都带有伤害,你可以使用LEFT 函数。 请记住,以下查询不适用于2_harm 等结果。

      select `value`,
             `type`,
              IF(LEFT(`type`,4)='harm','harm','not_harm' ) as is_harm 
      from test;
      

      演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/85

      【讨论】:

        猜你喜欢
        • 2019-06-20
        • 1970-01-01
        • 2021-07-16
        • 2015-08-31
        • 2021-09-24
        • 2020-10-31
        • 2022-12-17
        • 1970-01-01
        • 2020-08-03
        相关资源
        最近更新 更多