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'
)