我在系统中将电话号码存储为VARCHAR2,以便用户选择时可以在电话号码前输入'+'字符。
我的正则表达式完美地做到了这一点,但是当将数字存储在数据库中时,我想去除用户可能输入的所有空格。
我的正则表达式允许以下格式
+4470123456789
+447 0123456789
+447 01234 56789
01234567890
01234 567890
01234 567 890
我知道我可以通过不让用户在其数字中添加空格来解决我的问题,但是我从个人经验中知道,由于客户端的一些愚蠢的格式化而导致验证错误是多么令人沮丧。我曾尝试在INSERT / UPDATE触发器上使用TRIM函数,但我意识到仅限于前和尾空格,Oracle中是否可以使用其他任何函数删除内部空格?还是我需要编写自己的函数来做到这一点?
任何指针将不胜感激。
您想尝试replace (telno, ' ', '')
。
一种更好的方法是使用正则表达式删除字符串中的所有空格
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;
AAA BBB CCCDDDD EEE F