Oracle trim whitespace on the inside of a string

oracle, removing-whitespace, sql, whitespace

Solution

You want to try `replace (telno, ' ', '')`.

Problem

I am storing phone numbers as VARCHAR2 in my system to allow for users to input '+' characters infront of their phone number if they so choose. My regexp allows for this perfectly, but when storing the number in the database I want to strip out all whitespace the user may enter. My regexp allows for the following formats ``` +4470123456789 +447 0123456789 +447 01234 56789 01234567890 01234 567890 01234 567 890 ``` I know I could resolve my issue by not letting users put any whitespace in their numbers, but I know from personal experience just how frustrating it is to have a validation error due to some silly formatting on the client side. I have tried using the TRIM function on my INSERT/UPDATE trigger but I have realised that is limited to only front and trailing whitespace, is there any other function in Oracle I could use that would remove internal whitespace? Or do I need to write my own function to do this? Any pointers would be greatly appreciated.

Original source