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

问题描述 投票:1回答:1

我有这样的数据库表:

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

我该怎么做呢?

sql string oracle
1个回答
1
投票

试试REGEXP_REPLACE

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

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

SUBSTR(CLASSNUMBER,2)

Demo

© www.soinside.com 2019 - 2024. All rights reserved.