首页 > 解决方案 > 从列中提取几个字母(值在字符串中)

问题描述

需要根据行提取“CLASS”列的最后三个字母和最后 6 个字母。在 SQL 开发人员中。

我有下表-

ROW_NO    CLASS
   1      BLUE_ALL
   2      GREEN_ALL_SET             
   3      WHITE_ALL
   4      RED_ALL_SET
   5      YELLOW_ALL
   6      PURPLE_ALL_SET

我需要创建名为 CATEGORY 的第三列,如下所示

ROW_NO    CLASS            CATEGORY
   1      BLUE_ALL         ALL
   2      GREEN_ALL_SET    ALL_SET             
   3      WHITE_ALL        ALL
   4      RED_ALL_SET      ALL_SET
   5      YELLOW_ALL       ALL
   6      PURPLE_ALL_SET   ALL_SET      

谢谢

我尝试使用 SUBSTR 和 INSTR 函数的组合

标签: sqloracle

解决方案


好像你只有_ALL_SET_SET后缀,所以最后 7 或 3 个字符:

select row_no, class,
  substr(class, case when class like '%\_ALL\_SET' escape '\' then -7 else -3 end) category
from tablename

请参阅演示
结果:

ROW_NO  CLASS               CATEGORY
1       BLUE_ALL            ALL
2       GREEN_ALL_SET       ALL_SET
3       WHITE_ALL           ALL
4       RED_ALL_SET         ALL_SET
5       YELLOW_ALL          ALL
6       PURPLE_ALL_SET      ALL_SET

推荐阅读