如何根据Oracle中另一列的内容删除列中的一部分字符串

时间:2019-02-13 05:31:12

标签: sql string oracle

我有如下所示的数据库表:

Class   | ClassNumber
S       | S3
T       | T37
T       | T50
S       | SS07
S       | S4
S       | SG27

ClassNumber包含Class的值和另一个标识符。因此,如果ClassS,则意味着ClassNumber必须以S开头,后跟另一个标识符。

我想提取ClassNumber中的标识符。

如果我使用REPLACE函数,它将替换所有匹配的字符。但是我只希望删除前缀。

SELECT REPLACE(ClassNumber, Class, '') FROM MY_TABLE

这将使SS07成为07。但我希望它返回S07

我该怎么做?

1 个答案:

答案 0 :(得分:1)

尝试REGEXP_REPLACE

SELECT CLASSNUMBER,REGEXP_REPLACE(ClassNumber, '^'||Class, '') as id FROM t

或者,如果您确定它始终是单个数字类,则只需使用

SUBSTR(CLASSNUMBER,2)

Demo