Oracle修剪字符串内部的空格

问题描述 投票:11回答:2

我在系统中将电话号码存储为VARCHAR2,以便用户选择时可以在电话号码前输入'+'字符。

我的正则表达式完美地做到了这一点,但是当将数字存储在数据库中时,我想去除用户可能输入的所有空格。

我的正则表达式允许以下格式

+4470123456789
+447 0123456789
+447 01234 56789
01234567890
01234 567890
01234 567 890

我知道我可以通过不让用户在其数字中添加空格来解决我的问题,但是我从个人经验中知道,由于客户端的一些愚蠢的格式化而导致验证错误是多么令人沮丧。我曾尝试在INSERT / UPDATE触发器上使用TRIM函数,但我意识到仅限于前和尾空格,Oracle中是否可以使用其他任何函数删除内部空格?还是我需要编写自己的函数来做到这一点?

任何指针将不胜感激。

sql oracle whitespace removing-whitespace
2个回答
36
投票

您想尝试replace (telno, ' ', '')


0
投票

一种更好的方法是使用正则表达式删除字符串中的所有空格

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 CCCDDDD EEE F

© www.soinside.com 2019 - 2024. All rights reserved.