You want to try replace (telno, ' ', '')
.
Oracle trim whitespace on the inside of a string
-
05-10-2022 - |
Вопрос
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.
Решение
Другие советы
a better approach is to use a regular expression to remove all spaces within a string
SQL> with t as (
select 'AAA BBB CCC' col from dual union
select 'DDDD EEE F' col from dual
)
--
-- actual query:
--
select regexp_replace(col, '[[:space:]]+', chr(32)) col
from t;
COL
AAA BBB CCC DDDD EEE F