首页 > 解决方案 > 如何使用正则表达式在 SQL 中根据其他列添加新列

问题描述

使用此查询:

    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

如何用正则表达式做到这一点?如您所见,有像 sharm_9 这样的值

标签: mysqlsqlpresto

解决方案


如果您想要所有带有伤害的起始词,您可以使用 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


推荐阅读