Как удалить часть строки в столбце на основе содержимого другого столбца в Oracle - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть таблицы базы данных, которые выглядят так:

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

ClassNumber содержит значение Class и другой идентификатор.Это означает, что если Class равно S, то это означает, что ClassNumber должно начинаться с S и сопровождаться другим идентификатором.

Я хотел бы извлечь идентификатор в ClassNumber.

Если я использую функцию REPLACE, она заменит все совпадающие символы.Но я хочу только удалить префикс.

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

Вместо этого SS07 будет 07.Но я хочу, чтобы он возвращал S07.

Как мне это сделать?

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте REGEXP_REPLACE

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

Или, если вы уверены, что это всегда однозначный класс, просто используйте

SUBSTR(CLASSNUMBER,2)

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...