Oracle regex заменяет проблему

У меня есть одна таблица оракула с одним из столбцов, имеющих значения ниже,

,21A,22,21,28,28

Я хочу сделать регулярное выражение заменить для удаления,21 (точное совпадение), но оно удаляет значение из,21A

Ниже мой запрос,

update STUDENT set SCORES = REGEXP_REPLACE(SCORE, ',21' , '', 1, 1) where STUDENT_ID = 1;

Как этого достичь? Есть идеи?

1 ответ

Решение

В вашем случае вы можете использовать ,21(\W|$) регулярное выражение. Это соответствует ,21 за ним следует не состоящий из слов символ или конец строки.

REGEXP_REPLACE(SCORE, ',21(\W|$)' , '\1', 1, 1)

Вот как вы можете выполнить поиск и замену всего слова в Oracle SQL:

regexp_replace( 
    haystack
    , '(\W|^)(' || what_to_replace || ')(\W|$)'
    , '\1' || with_what || '\3'
    , 1
    , 0
    , 'imn'
)
Другие вопросы по тегам