Jak wyciąć ze stringa wszystkie cyferki? - dwa sposoby


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