【发布时间】:2020-01-15 14:18:48
【问题描述】:
我有以下需要修改的 Oracle sql 查询:
Select (SUBSTR(long_comp_name, 1, 23))
Kontrakt_Bezeichnung, long_comp_name
FROM TRT_AGG
where ROOT = 'SP';
查询结果如下:
Kontrakt_Bezeichnung long_comp_name
SP Plus Corp SP Plus Corp
SP Plus Corp SP Plus Corp
SP Plus Corp SP Plus Corp
SP Plus Corp SP Plus Corp
S&P 500 FUTR OPTN Jun20 S&P 500 FUTR OPTN Jun20P 4275
S&P 500 FUTR OPTN Jun20 S&P 500 FUTR OPTN Jun20P 4275
S&P 500 FUTR OPTN Jun20 S&P 500 FUTR OPTN Jun20P 4275
S&P 500 FUTR OPTN Jun20 S&P 500 FUTR OPTN Jun20C 4275
现在我想修改我的查询,以便它将从任何月份开始的字符串中删除值的另一部分。例如,在上面的示例中,它将从“Jun20”中删除这个完整的部分。对于其他值,它应该保持不变。
我希望得到如下结果:
Kontrakt_Bezeichnung
SP Plus Corp
SP Plus Corp
SP Plus Corp
SP Plus Corp
S&P 500 FUTR OPTN
S&P 500 FUTR OPTN
S&P 500 FUTR OPTN
S&P 500 FUTR OPTN
我在 Oracle 视图中使用此查询字段,因此无法在选择查询中使用 With 子句
【问题讨论】:
-
只是一个建议:你考虑过regexp_replace吗?
-
对不起,我发现 substr 很简单,因为我之前没有使用过正则表达式
-
您无法从您提供给我们的查询中获得第一个结果。在您的问题中,添加 long_comp_name 列中与此类似的原始值的一个示例:“SP Plus Corp”,以及与此类似的一个示例:“S&P 500 FUTR OPTN Jun20”。
-
添加了 long_comp_name 的结果...我认为我们可以在这里使用 case 条件对吗?
-
我已经编辑了我的查询和问题