【发布时间】:2019-10-17 03:36:36
【问题描述】:
我想选择出现在第一个下划线 _ 之后和第二个、第三个或任何数量的下划线 _ 出现在字符串中的部分字符串。
例如我有这样的字符串:
75618_LORIK1_2_BABA_ODD_GENERIC
19_GENTRIT3_CC_DD_FF_BROWSERTC
75618_BETIM2
输出应该是:
LORIK1
GENTRIT3
BETIM2
我似乎无法找到某种子字符串的表达式来获取该部分,我尝试使用:
SELECT SUBSTR(COLNAME, 0, INSTR(COLNAME, '_')-1) FROM DUAL;
但它似乎只得到第一次出现'_'之前的部分。
【问题讨论】:
-
您所说的“在第二个、第三个或其他...之前”是什么意思?这是没有意义的。您的意思是“在第二个下划线之前,或者如果只有一个下划线,则到字符串的末尾”?然后 - 如果整个字符串中没有下划线怎么办?最后,是否需要使用正则表达式?这不是解决这个问题的最有效方法。
-
@mathguy 我知道字符串永远不会只有 _,如示例中所示的字符串格式,我已经显示了输出。据我所知,有两种方法可以解决这个问题,使用 Substr Instr 的组合或通过我不知道如何使用的正则表达式......