W poście pisaliśmy, w jaki sposób wyciąć literki ze stringa. Cyferki ze stringa wycinamy tak samo, tylko że inaczej :)
Do wycięcia cyferek użyjemy, jak poprzednio, funkcji REPLACE i TRANSLATE. Za to funkcja UPPER, użyta by obsłużyć wielkie i małe litery, tym razem nie będzie nam potrzebna.
Wycięcie cyferek ze stringa będzie zatem wyglądało tak:
SELECT
replace(translate('Tu 1 nie 2 powinno 3 być 4 cyferek. 5','0987654321',' '),'')
FROM dual;
Tu nie powinno być cyferek.
A drugi sposób?
Innym sposobem będzie użycie funkcji REGEXP_REPLACE. Funkcja jest bardziej złożone i daje większe możliwości.
REGEXP_REPLACE( string, pattern [, replacement_string [, start_position [, nth_appearance [, match_parameter ] ] ] ] )
Nasza funkcja wycinająca cyferki będzie wyglądała następująco:
select
REGEXP_REPLACE ('Tu 1 nie 2 powinno 3 być 4 cyferek. 5', '\d', '')from dual;
Wiadomo, że tradycyjny REPLACE nie obsłuży wszystkich sytuacji, z które bez problemy wykonamy z pomocą REGEXP_REPLACE. Niemniej wiele rzeczy da się ogarnąć starym dobrym REPLACE.
Do prostych rzeczy, jak wycięcie literek czy cyferek wolelibyście użyć REPLACE czy REGEXP_REPLACE? Co wybieracie?
Komentarze
Prześlij komentarz