Replace by position 20188367001

Replace by position

Have you ever wanted to replace a character in a string just by position? I needed this the other day and IMHO there is no way in Oracle PL/SQL to do this, so I decided to write this my self.

It is really simple code and it probably needs improvement but it works for now and I think it is rather simple. Any improvement suggestions are of course very welcome in the comments.

CREATE OR REPLACE FUNCTION replacepos
 
( source_in      IN VARCHAR2
  , replacechar_in IN VARCHAR2
  , position_in    IN NUMBER) RETURN VARCHAR2 IS
  l_returnvalue VARCHAR2(32767);
BEGIN
  — copy from the source string up to, but not including,
  — the character position
  — to be replaced
  l_returnvalue := substr( str1 => source_in
                         , pos => 1
                         , len => position_in – 1);
  — add the replacement character
  — just a single character, but more can be sent in,
  — so substring the parameter
  l_returnvalue := l_returnvalue ||
                    substr( str1 => replacechar_in
                          , pos =>
1
                          , len => 1);
  — copy the rest of the source string
  l_returnvalue := l_returnvalue ||
                    substr( str1 => source_in
                          , pos => position_in + 1);
  RETURN l_returnvalue;
END replacepos;

2 Comments

  1. Patrick Barel June 9, 2011
  2. Anton Scheffer June 9, 2011