programing

문자열 내부의 Oracle 자르기 공백

css3 2023. 6. 29. 20:19

문자열 내부의 Oracle 자르기 공백

사용자가 전화 번호 앞에 '+' 문자를 입력할 수 있도록 시스템에 전화 번호를 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;

COL

AAA BBB CCC DDDDEEF

언급URL : https://stackoverflow.com/questions/21484677/oracle-trim-whitespace-on-the-inside-of-a-string