sql - 从列中提取几个字母(值在字符串中)
问题描述
需要根据行提取“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 函数的组合
解决方案
好像你只有_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
推荐阅读
- python - 参数 1:无法从 'System.Data.SqlClient.SqlDataAdapter' 转换为 'System.Data.DataSet' 并且无法识别列名
- c++ - 使用 -pedantic 编译时采用 std::reference_wrapper 的模棱两可的构造函数
- c# - AndroidApp 和 MySqlConnection 不起作用 connection.open
- python - 无法更新表单中的所需字段
- azure - 如何通过组织帐户或活动目录访问 Azure 服务器
- react-native - 如何正确操作 Reducer 内部的状态
- xml - 如何更改 XML 中的日期格式
- ibm-mobilefirst - 通过 npm 404 错误安装 mfpmigrate-cli
- c# - 网格视图助手
- c# - 向 DataPoint 添加太多点